我偶然发现了一个执行此操作的脚本:
"complete" === document.readyState ? setTimeout(I, 1) : document.addEventListener ? (document.addEventListener("DOMContentLoaded", X, h), window.addEventListener("load", X, h)) : window.attachEvent ? window.attachEvent("onload", X) : console.log("No available event.")
其中X和I是函数,h是假的。
它做了什么?
答案 0 :(得分:3)
也许你会这样更好地理解它:
if("complete" === document.readyState){
setTimeout(I, 1);
}else{
if(document.addEventListener){
document.addEventListener("DOMContentLoaded", X, h),
window.addEventListener("load", X, h));
}else{
if(window.attachEvent){
window.attachEvent("onload", X);
}else{
console.log("No available event.");
}
}
}
它确实:
I
addEventListener
X
(通过DOMContentLoaded
或load
个事件)attachEvent
load
事件)addEventListener
或attachEvent
我希望函数X
访问或修改DOM,因此上面的脚本会在调用X
之前检查DOM是否已完全加载。
答案 1 :(得分:0)
这似乎是一大块代码,它以跨浏览器的方式检测DOM的加载状态。
如果浏览器不支持DOMContentLoaded,则会回退到使用窗口加载事件。
一旦可以操作DOM,即在页面呈现后,用于启动代码。