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
ここでおそらく起こっているのは、_window.onload
_が後でオーバーライドされていることだと思います。_<body onload="">
_のようなものを経由していないことを確認してください
サイズ変更関数のalert(window.onload)
でこれを確認し、実際にアタッチされているものを確認できます。
これは、パートナーに必要なサードパーティjQueryコードを追加したときに起こりました。時代遅れのwindow.onloadをjQueryドキュメントに簡単に変換できたはずです。とはいえ、現代のクロスブラウザー互換ソリューションがあるかどうかを知りたかったのです。
がある!
window.addEventListener ?
window.addEventListener("load",yourFunction,false) :
window.attachEvent && window.attachEvent("onload",yourFunction);
私が知っていることを知って、jQueryルートを使用するようにコードを変換できます。そして、サイトに影響を与えないようにコードをリファクタリングするようパートナーにお願いします。
私が修正を見つけたソース-> http://ckon.wordpress.com/2008/07/25/stop-using-windowonload-in-javascript/
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);
それは私のために働いたし、私の英語のために申し訳ありません。
これは私にとってはうまくいきます、あなたの問題はどこか他の場所にあると思います:
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イベントが競合を引き起こす可能性があります
これは、関数resize()の横にある「window.onload」を呼び出すときに機能します
私にとっては、window.onload
タグ内に記述したときにscript type="text/javascript
が機能していませんでした。
代わりに、script language="Javascript" type="text/javascript
タグに同じものを記述する必要があり、正常に機能しました。