2012-02-09 6 views
0

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

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

しかし、それは動作しませんでした。私は誰かが私にそれを確認する必要があります。多くのおかげで

答えて

0

を使用するスクリプトに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> 

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

+0

はい、それは助けました。ありがとう! –

1

することができます(イベントハンドラ(複数可)を追加することによって)がありますが、両方

代わりにwindow.onloadへの呼び出しを追加する必要はありません:の1以上の場合は

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

<body> 
</body> 
1

質問に対する回答は「いいえ」です。しかし、そこには方法があります。

1つのonload関数に両方の呼び出しを追加するのが理想的ですが、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> 
+0

私はそれを私の心に置いてください。ありがとう。 –

1

いいえ、document.body.onloadは実際にはwindow.onloadにマップされます。 <body onload="a()">console.log(window.onload)がある場合、a()がコンソールに出力されます。

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

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

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

window.addEventListener('load', a, false); 
window.addEventListener('load', b, false); 
関連する問題