jQueryのに何この「ポイントを想定したように、IEで例外を投げているかどうかを解決するためにいくつかのトリックを使用するかどうかでありますこの問題。
onreadystatechange
とonload
についています。
// If IE event model is used
} else if (document.attachEvent) {
// ensure firing before onload,
// maybe late but safe also for iframes
document.attachEvent("onreadystatechange", DOMContentLoaded);
// A fallback to window.onload, that will always work
window.attachEvent("onload", jQuery.ready);
// If IE and not a frame
// continually check to see if the document is ready
var toplevel = false;
try {
toplevel = window.frameElement == null;
} catch(e) {}
if (document.documentElement.doScroll && toplevel) {
doScrollCheck();
}
}
さらに、ページがスクロールできるかどうかが継続的にチェックされます。 DOMがロードされると、ページはスクロール可能になり、したがってjQuery.ready
がトリガーされます。
// The DOM ready check for Internet Explorer
function doScrollCheck() {
if (jQuery.isReady) {
return;
}
try {
// If IE is used, use the trick by Diego Perini
// http://javascript.nwbox.com/IEContentLoaded/
document.documentElement.doScroll("left");
} catch(e) {
setTimeout(doScrollCheck, 1);
return;
}
// and execute any waiting functions
jQuery.ready();
}
あなたのアプリでこの動作を実装したり、jQueryを直接使用することができます。
これはattachEvent部分であり、あなたが 'attach()'でやっていることではありませんか? –
はい。私はそれが呼ばれるのを見るためにアタッチメント内に警告を入れます。しかし、そうではありません! – Himberjack
あなたの関数を呼び出すものは、(function())()はそれ自身を実行しません。 –