javascript---IE中的DOM ready.

当我们想在页面加载之后执行某个函数,肯定会想到onload了

但onload在浏览器看来,就是页面上的东西全部都加载完毕后才能发生,但那就为时已晚了。

如果只需要对DOM进行操作,那么这时就没必要等到页面全部加载了。我们需要更快的方法。

Firefox 有DOMContentLoaded事件可以轻松解决,可惜的就是IE没有。

MSDN关于JSCRIPT的一个方法有段不起眼的话,当页面DOM未加载完成时,调用doScroll方法时,会产生异常。那么我们反过来用,如果不异常,那么就是页面DOM加载完毕了!

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();    
        }    
    };    
} 

你可能感兴趣的:(JavaScript,浏览器,IE,firefox)