天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

window.onload 加載完畢的問題及解決方案(下)

接上篇,其它方法:
一、在IE中還可以在onreadystatechange事件里進(jìn)行判斷
http://www.thefutureoftheweb.com/blog/adddomloadevent
這里有Jesse Skinner寫了一段獨(dú)立的腳本函數(shù)來解決各種瀏覽器的onload問題,。
http://img.jb51.NET/jslib/adddomloadevent.js
復(fù)制代碼 代碼如下:
/*
* (c)2006 Jesse Skinner/Dean Edwards/Matthias Miller/John Resig
* Special thanks to Dan Webb's domready.js Prototype extension
* and Simon Willison's addLoadEvent
*
* For more info, see:
* http://www.thefutureoftheweb.com/blog/adddomloadevent
* http://dean.edwards.name/weblog/2006/06/again/
* http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
* http://simon.incutio.com/archive/2004/05/26/addLoadEvent
*
*
* To use: call addDOMLoadEvent one or more times with functions, ie:
*
* function something() {
* // do something
* }
* addDOMLoadEvent(something);
*
* addDOMLoadEvent(function() {
* // do other stuff
* });
*
*/

addDOMLoadEvent = (function(){
// create event function stack
var load_events = [],
load_timer,
script,
done,
exec,
old_onload,
init = function () {
done = true;

// kill the timer
clearInterval(load_timer);

// execute each function in the stack in the order they were added
while (exec = load_events.shift())
exec();

if (script) script.onreadystatechange = '';
};

return function (func) {
// if the init function was already ran, just run this function now and stop
if (done) return func();

if (!load_events[0]) {
// 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="http://0" src="http://0"><//scr"+"ipt>");
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
load_timer = setInterval(function() {
if (/loaded|complete/.test(document.readyState))
init(); // call the onload handler
}, 10);
}

// for other browsers set the window.onload, but also execute the old window.onload
old_onload = window.onload;
window.onload = function() {
init();
if (old_onload) old_onload();
};
}

load_events.push(func);
}
})();

二、另外還有在IE中的doScroll的,這是種方法只對IE有作用,而且它是一種hack方法。

在MSDN:About Element Behaviors 我們可以看到
復(fù)制代碼 代碼如下:
When the ondocumentready event fires, the document has been completely parsed and built. Initialization code should be placed here if the component needs to navigate the primary document structure. The ondocumentready event notifies the component that the entire page is loaded, and it fires immediately before the onload event fires in the primary document.
A few methods, such as doScroll, require the primary document to be completely loaded. If these methods are part of an initialization function, they should be handled when the ondocumentready event fires.

http://Javascript.nwbox.com/IEContentLoaded/
復(fù)制代碼 代碼如下:
/*
*
* IEContentLoaded.js
*
* Author: Diego Perini (diego.perini at gmail.com) NWBOX S.r.l.
* Summary: DOMContentLoaded emulation for IE browsers
* Updated: 05/10/2007
* License: GPL/CC
* Version: TBD
*
*/

// @w    window reference
// @fn    function reference
function IEContentLoaded (w, fn) {
    var d = w.document, done = false,
    // only fire once
    init = function () {
        if (!done) {
            done = true;
            fn();
        }
    };
    // polling for no errors
    (function () {
        try {
            // throws errors until after ondocumentready
            d.documentElement.doScroll('left');
        } catch (e) {
            setTimeout(arguments.callee, 50);
            return;
        }
        // no errors, fire
        init();
    })();
    // trying to always fire before onload
    d.onreadystatechange = function() {
        if (d.readyState == 'complete') {
            d.onreadystatechange = null;
            init();
        }
    };
}

在jQuery的源碼中,針對Mozilla, Opera 和webkit用的是DOMContentLoaded,也就是上一篇中第一種;

而對IE用的是doScroll的方法。

JavaScript技術(shù)window.onload 加載完畢的問題及解決方案(下),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 高清国语自产拍在线 | 亚洲精品午夜久久久伊人 | 伊人角狠狠狠狠 | 久久精品国产只有精品 | 亚洲妈妈精品一区二区三区 | 国产精品高潮呻吟AV久久96 | 欧美激情精品久久久久 | 拔萝卜视频免费看高清 | 啊灬啊别停灬用力啊在线观看视频 | 丰满饥渴老太性hd | 精品人伦一区二区三区潘金莲 | 艳照门在线观看 | 背着老婆爆操性感小姨子 | 午夜A级理论片左线播放 | 99精品国产免费久久久久久下载 | 99re这里只有精品国产 | 刺激性视频黄页 | 国产伦精品一区二区三区免费 | 免费观看的毛片 | 国产午夜亚洲精品不卡电影 | 99国产精品欲AV蜜桃臀麻豆 | 领导边摸边吃奶边做爽在线观看 | 久久青青无码AV亚洲黑人 | 四库影院永久国产精品 | 伦理 电影在线观看百度影音 | 欧美日韩黄色 | 无码专区无码专区视频网网址 | 亚洲黄色高清 | 日韩亚洲不卡在线视频 | 亚洲阿v天堂在线2017 | 失禁h啪肉尿出来高h | 妖精视频一区二区免费 | 亚洲一区综合图区 | 福利一区福利二区 | 国偷自产AV一区二区三区健身房 | 日日噜噜噜噜夜夜爽亚洲精品 | 快播电影频道 | 99视频免费在线 | AV久久久囯产果冻传媒 | 色小说在线 | 岛国大片在线观看完整版 |