2012-08-02 57 views
1

我蹒跚与做这样的脚本:消防domContentLoaded手动

"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和我是一个函数,h是假的。

它有什么作用?

回答

0

这似乎是一个代码块,它以跨浏览器的方式检测DOM的加载状态。

如果浏览器不支持DOMContentLoaded,它将回退到使用窗口加载事件。

这是用来启动您的代码,一旦DOM可用于操纵,即页面已经呈现后。

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."); 
     } 
    } 
} 

它的作用:

  1. 检查该文件被加载
  2. 如果是,功能I之后1毫秒
  3. 称为
  4. 如果不是,它会检查浏览器是否支持addEventListener
  5. 如果它是支持的,加载DOM时,功能X将被调用(通过DOMContentLoadedload事件)
  6. 如果不是,它会检查,如果浏览器支持attachEvent
  7. 若支持,当DOM加载,函数X将被调用(通过load事件)
  8. 如果它不是,它说,该浏览器不支持addEventListener也不attachEvent

我猜功能X访问或修改DOM,所以脚本abov在调用X之前,检查DOM是否完全加载。