2012-08-02 54 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是否完全加載。