62

Web サイトに次のコードがあります。

 window.onload = resize;
 window.onresize = resize;

 function resize(){
  heightWithoutHeader = (window.innerHeight - 85) + "px"; 
  document.getElementById("main-table").style.height = heightWithoutHeader;
  document.getElementById("navigation").style.height = heightWithoutHeader;
 }

正常にonresize動作しますが、onloadイベントは発生しません。Firefox と Chrome で試しましたが、どちらも機能しません。

あなたの助けに感謝し、評判のために行きます! ;D

4

10 に答える 10

116

ここでおそらく起こっているのは、後でオーバーライドされていることだと思います。次のwindow.onloadようなものを介していないことを確認してください<body onload="">

サイズ変更機能でこれを確認してalert(window.onload)、実際に何が添付されているかを確認できます。

于 2010-05-11T14:31:00.447 に答える
5

window.onload 行を javascript ファイルの末尾または最初の関数の後に移動すると、機能します。

function resize(){
    heightWithoutHeader = (window.innerHeight - 85) + "px"; 
    document.getElementById("main-table").style.height = heightWithoutHeader;
    document.getElementById("navigation").style.height = heightWithoutHeader;
}
// ...
// at the end of the file...
window.onload = resize;
window.onresize = resize;

ただし、onload も置き換えないのがベスト プラクティスです。代わりに、関数を onload イベントにアタッチします。

function resize(){
    heightWithoutHeader = (window.innerHeight - 85) + "px"; 
    document.getElementById("main-table").style.height = heightWithoutHeader;
    document.getElementById("navigation").style.height = heightWithoutHeader;
}
// ...
// at the end of the file...
window.addEventListener ? 
    window.addEventListener("load",resize,false) 
    : 
    window.attachEvent && window.attachEvent("onload",resize);

それは私にとってはうまくいき、私の英語で申し訳ありませんでした。

于 2016-12-30T04:32:44.543 に答える
1

これは私にとってはうまくいきます。あなたの問題は別の場所にあると思います:

 function resize(){
  var tester = document.getElementById("tester"),
      html = tester.innerHTML

  tester.innerHTML = html + "resize <br />"
 }  

window.onload = resize;
window.onresize = resize;

ここで自分でテストできます: http://jsfiddle.net/Dzpeg/2/

onLoad と呼ばれる唯一のイベントですか?他の onLoad イベントが競合を引き起こす可能性があります

于 2010-05-11T13:17:51.160 に答える
-1

これは、関数 resize() の横にある「window.onload」を呼び出すと機能します。

于 2010-05-11T13:06:58.593 に答える
-4

それが本当にその順序であるならば、それは間違いなく機能しないでしょう。関数自体が宣言される前に、イベントハンドラーに関数を割り当てることはできません。

于 2010-05-11T12:58:25.667 に答える