2014-07-23 52 views
8

我有以下代碼附加到DOMContentLoaded事件的功能,但該功能從來沒有在Internet Explorer 11的Javascript DOMContentLoaded事件在Internet Explorer中不費一槍

代碼調用:

if (document.addEventListener) { 
    document.addEventListener("DOMContentLoaded", init, false); 
} 
else { 
    document.attachEvent("onDOMContentLoaded", init); 
} 
+0

你可以指定你在哪裏調用這段代碼,任何文件加載或按鈕點擊!請創建一個jsFiddle,以便我們可以幫助更好。 – MarmiK

回答

8

有幾個原因可能不會觸發:

  1. 它已經被觸發(在您附加事件處理程序之前)你錯過了它。
  2. 您正在運行不支持DOMContentLoaded事件的舊版IE。
  3. 在這些代碼行之前存在某種腳本錯誤,因此這些代碼行並未實際執行,因此事件處理程序從未實際註冊過。
  4. 您試圖在嵌入式iFrame上執行此操作,並且可能沒有正確的iFrame文檔(某些瀏覽器在加載外部源時可能會切換文檔)。

要檢查腳本錯誤,應該在IE中打開調試控制檯(按F12)並查看控制檯以查看是否有任何腳本錯誤被報告。

您可以檢查document.readyState === "complete"以查看它是否已經被解僱。

而且,在IE9之前的版本中,您需要attachEvent,IE不支持DOMContentLoaded,因此您的其他分支將無法工作。您將不得不在這些舊版本的IE中使用不同的檢測方法。

您可以看到一個經過良好測試的跨瀏覽器的純javascript函數,用於在文檔準備就緒時收到通知:pure JavaScript equivalent to jQuery's $.ready() how to call a function when the page/dom is ready for it

+1

謝謝document.readyState是解決方案 –