一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

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

接上篇,其它方法:
一、在IE中還可以在onreadystatechange事件里進行判斷
http://www.thefutureoftheweb.com/blog/adddomloadevent
這里有Jesse Skinner寫了一段獨立的腳本函數來解決各種瀏覽器的onload問題,。
http://img.jb51.NET/jslib/adddomloadevent.js
復制代碼 代碼如下:
/*
* (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 我們可以看到
復制代碼 代碼如下:
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/
復制代碼 代碼如下:
/*
*
* 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技術window.onload 加載完畢的問題及解決方案(下),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 色中文网| 天天干天天操天天干 | 天天做天天做天天综合网 | 青青国产成人久久激情911 | 91免费版视频 | 天天综合网网欲色 | 亚洲第1页 | 国产一区二区三区在线观看视频 | 欧美日韩色视频在线观看 | 午夜综合网 | 青草国产在线 | 全部免费69堂在线视频 | 99精品视频一区在线视频免费观看 | 伊人免费| 色鬼久久| 国内精品日本久久久久影院 | 伊人久久成人成综合网222 | www.99爱| 伊人婷婷色 | 色哟哟在线网站 | 女人洗澡一级毛片一级毛片 | 国产亚洲婷婷香蕉久久精品 | 国产精品网红女主播久久久 | 91刺激| 日韩精品一级毛片 | 日本精品中文字幕在线播放 | 男人扒开女人腿使劲桶动态图 | 国产精品香蕉成人网在线观看 | 精品久久久久久久免费加勒比 | 欧美精品亚洲精品日韩经典 | 亚洲爽视频 | 精品视频在线观看一区二区三区 | 黄色片视频在线播放 | 国产美女一区二区三区 | 欧美一区二区三区激情啪啪 | 国产一区二区色淫影院 | 亚洲女人天堂网 | 亚洲精品高清国产一久久 | 婷婷网五月天天综合天天爱 | 色婷婷色综合激情国产日韩 | 欧美日韩国产一区二区三区伦 |