0

body onload と window.onload を同時に使用できますか? このコードを使用して試しました

<body onload = "alertFirst()">
</body>
<script>
    window.onload = alertSec;
</script>

しかし、うまくいきませんでした。確認してくれる人が必要なだけです。どうもありがとう

4

4 に答える 4

2

あなたの質問に対する答えは「いいえ」です。ただし、それを回避する方法があります。

両方の呼び出しを 1 つの onload 関数に追加するのが理想的ですが、1 つが既に追加された後に onload ハンドラーを追加する必要があり、これを容易にするフレームワークを使用していない場合は、次のように処理できます。

<html>
    <head>
        <script type="text/javascript">
            function alertFirst(){
                alert('First');
            }
            function alertSec(){
                alert('Second');
            }
        </script>
    </head>
    <body onload="alertFirst();">
        content
    </body>
    <script>
        var func = document.body.onload;
        window.onload=function(){
            func();
            alertSec();
        }
    </script>
</html>
于 2012-02-09T15:00:20.167 に答える
1

いいえ、document.body.onload実際には にマッピングされwindow.onloadます。自分で確認できます —<body onload="a()">と to がconsole.log(window.onload)ある場合a()は、コンソールに出力されます。

できることは、他の 2 つの関数を呼び出す 1 つの onload イベント ハンドラーを持つことです。

window.onload = function () {
  a();
  b();
};

または 2 つのイベント リスナー

window.addEventListener('load', a, false);
window.addEventListener('load', b, false);
于 2012-02-09T15:00:42.513 に答える
1

(イベント ハンドラーを追加することで) 可能ですが、両方を持つべきではありません。

代わりに、window.onload への呼び出しを追加します。

<html>
<head>
<script>
  window.onload = function() {
    alertFirst();
    alertSec();
  }
</script>
</head>

<body>
</body>
于 2012-02-09T14:53:28.937 に答える
0

使用する 1 つ以上のスクリプトの BODY HTML タグにイベント ハンドラーがある場合でも、それを JavaScript コードに移動できます。以下の例を参照してください。

スクリプト #1:

<script language="javascript">

function start(){
...code for script #1...
}

</script>

<body onload="start()">

スクリプト #2:

<script language="javascript">

function init(){
...code for script #2...
}

window.onload=init;

</script>

結果:

<script language="javascript">

function start(){
...code for script #1...
}

function init(){
...code for script #2...
}

window.onload=function(){
start();
init();
}

</script>

<body>

私はそれがあなたを助けることができると思います。

于 2012-02-09T14:56:02.427 に答える