javascript - 跨浏览器 Dom 就绪

标签 javascript dom-events onload-event

我继承了这段代码,它似乎不是最优的,而且可能不正确,因为它在窗口和文档对象上添加了事件监听器。但是,除黑莓5.0外,它都可以正常工作。有人可以解释一下所有这些设置是否正确,或者是否有任何建议可以使其更好和/或更简化?

        if (document.readyState === "complete") 
            callback();
        else if (document.addEventListener) 
        {
            document.addEventListener("DOMContentLoaded",callback,false);
            window.addEventListener("load",callback,false);
        }
        else if(window.attachEvent) 
        {
            document.attachEvent("onreadystatechange", callback);
            window.attachEvent("onLoad",callback);
        } else
            setTimeout(callback,2000);

最佳答案

如果您想知道它是如何完成的或了解实现它的方法。我建议您看看迭戈·佩里尼 (Diego Perini) 的作品。他的工作和方法被用于许多 DOM 库,包括 jQuery。不幸的是,这家伙似乎没有得到太多的信任。他是 try/catch 轮询方法的先驱者,这使得当 IE 加入其中时跨浏览器 dom 加载事件成为可能。

https://github.com/dperini/ContentLoaded/blob/master/src/contentloaded.js

关于javascript - 跨浏览器 Dom 就绪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902280/

相关文章:

javascript - 将 CoffeeScript 编译为特定的 Javascript 文件

javascript - 无法读取未定义的属性 'hue'

javascript区分单击和双击

javascript - 在一个函数中加载图像

javascript - 禁用先前选择的下拉选项,检查文本和 id 值

javascript - 如何更改 AngularJS 中二维数组的属性?

javascript - 使用单选按钮和 javascript style=none 隐藏和显示 html 元素

javascript - 向事件函数添加附加参数

javascript - 哪个 jQuery 事件处理程序适用于页面加载?

javascript - jquery 加载窗口未执行