中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

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 加載完畢的問題及解決方案(下),轉載需保留來源!

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

主站蜘蛛池模板: 精品欧美一区二区三区久久久小说 | 91原创视频在线观看 | 日日操视频 | 国产精品99久久久久久动医院 | 久久精品国产一区 | 成人超碰在线 | 成人小视频在线观看 | 日韩精品一区二区三区在线播放 | 精品国产乱码久久久久久蜜柚 | 久久精品亚洲成在人线av网址 | 亚洲视频二区 | 激情伊人网 | 亚洲国产黄色av | 国产亚洲一区二区在线观看 | 桃花av在线 | 国产高清区 | 成年人网站免费 | 国产高清免费视频 | 日韩超碰| 免费国产视频 | 日韩中文字幕在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 欧美又大粗又爽又黄大片视频 | 欧美精品成人一区二区三区四区 | 成人a免费 | 成人精品一区二区 | 中国一级特黄视频 | 国产精品久久久 | 一区二区不卡视频 | 久久精品亚洲精品 | 日韩三区在线 | 激情久久网 | 天天色影视综合 | 免费在线观看av网站 | 午夜av成人 | 亚州午夜精品 | 97精品超碰一区二区三区 | 91视频官网 | 一级片aaa| 黑人中文字幕一区二区三区 | 91在线视频观看 |