JSを使用してbody onloadイベントをクロスブラウザーでアタッチするにはどうすればよいですか?これほど簡単ですか?JS with body onloadイベントを添付する
document.body.onload = function(){
alert("LOADED!");
}
JSを使用してbody onloadイベントをクロスブラウザーでアタッチするにはどうすればよいですか?これほど簡単ですか?JS with body onloadイベントを添付する
document.body.onload = function(){
alert("LOADED!");
}
これはDOMContentLoadedを利用しています - 詳細ブログ記事交渉を - - onloadイベントの前に発射した - しかし、あなたはすべてのあなたのunobtrusivenessに固執することができます...
window.onload - Dean Edwardsここからコピーされた完全なコードですその同じブログのコメント。
// Dean Edwards/Matthias Miller/John Resig
function init() {
// quit if this function has already been called
if (arguments.callee.done) return;
// flag this function so we don't do the same thing twice
arguments.callee.done = true;
// kill the timer
if (_timer) clearInterval(_timer);
// do stuff
};
/* for Mozilla/Opera9 */
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", init, false);
}
/* for Internet Explorer */
/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
var script = document.getElementById("__ie_onload");
script.onreadystatechange = function() {
if (this.readyState == "complete") {
init(); // call the onload handler
}
};
/*@end @*/
/* for Safari */
if (/WebKit/i.test(navigator.userAgent)) { // sniff
var _timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) {
init(); // call the onload handler
}
}, 10);
}
/* for other browsers */
window.onload = init;
さまざまなブラウザにはいくつかの方法があります。 jQueryのようなライブラリは、それをあなたのためにすべて処理するクロスブラウザインターフェイスを提供します。
なぜ使用しないでくださいwindow
自身のonload
イベント?
window.onload = function() {
alert("LOADED!");
}
私は間違っていない場合、それはすべてのブラウザ間で互換性があります。
画像やその他を含む/すべて/がロードされた後にwindow.onloadが起こります。起動遅延を防ぐためにできるだけ早くDOMを操作したい場合は、window.onloadを使用できません。 – rpjohnst
document.body.onload
クロスブラウザですが、一つだけのコールバックを(あなたがそれに複数の機能を割り当てることはできません)ことができ、従来のメカニズム。
addEventListener
は、Internet Explorerではサポートされていません(attachEvent
を使用しています)ので、ライブラリ(jQuery、MooTools、あなたのブラウザの醜さ。
Internet Explorerは、[バージョン9以降](http://msdn.microsoft.com/en-us/library/ie/ff975245(v=vs.85).aspx)のaddEventListenerをサポートしています。 – Sampson
jcalfee314さんのアイデアが私のために働いていた - 私はwindow.onload = onLoad
を持っていたので、<body onload="...">
の機能が呼び出されていなかった(これは私が制御できない)。
oldOnLoad = window.onload
window.onload = onLoad;
function onLoad()
{
oldOnLoad();
...
}
編集:
は、これはそれを修正FirefoxがそうoldOnLoad = window.onload
に置き換え、
oldOnLoad = document.body.onload;
好きではなかったです。
Rusky氏がAndreasの答えに触れているように、window.onloadはdocument.body.onloadとは異なります。 DOMだけでなく、すべてがロードされた後に発生します。 – Muhd
Firefoxはバージョン10以上のバージョンではoldOnLoad = document.body.onloadをサポートしているので、私はこれを変更しています:if(oldOnLoad = document.body.onload){document.body.onload = onLoad; } else {oldOnLoad = window.onload; window.onload = onLoad; }。これは、ほとんどのブラウザで必要なものを私に与えてくれたようです。必要なときには、window.onloadオプションをフォールバックとして使用します。 – arlomedia
クロスブラウザwindow.loadイベント
function load(){}
window[ addEventListener ? 'addEventListener' : 'attachEvent' ](addEventListener ? 'load' : 'onload', load)
短くポイント! –
恐ろしいもの:) – Jake
なぜjQueryのを使用していませんか?
$(document).ready(function(){}))
私が知る限り、これは完璧な解決策です。
完全なドキュメントが読み込まれる前に起動します。 – rbrundritt
あなたの例で既に行っていることを使用するだけではどうですか?それは私のために働きます – Zac