簡體   English   中英

DOMContentLoaded事件不會觸發

[英]DOMContentLoaded event does not fire

我想嘗試IE的javascript的DOMContentLoaded事件。 但是該事件不會觸發。 IE不支持此功能嗎? 請對此提供幫助。 谷歌搜索后,我沒有找到太多幫助。 我想嘗試使用javascript而不是jquery。 請對此提供幫助。

IE9及更高版本和所有其他現代瀏覽器均支持DOMContentLoaded

對於使用onreadystatechange的IE早期版本,有一些變通辦法。 您可以在此處看到完整的跨瀏覽器,簡單的javascript內容加載檢測功能: 純JavaScript等效於jQuery的$ .ready()如何在頁面/ dom准備就緒時調用函數 ,您可以按原樣使用,也可以可以從代碼中借用概念。

基本思想是,在現代瀏覽器中使用DOMContentLoaded ,在較舊版本的IE中,您使用onreadystatechange並回退到window onload 首先觸發的是文檔可以安全查詢和修改的最早時刻。

上面鏈接的代碼的症結在於這種邏輯:

        // otherwise if we don't have event handlers installed, install them
        if (document.addEventListener) {
            // first choice is DOMContentLoaded event
            document.addEventListener("DOMContentLoaded", ready, false);
            // backup is window load event
            window.addEventListener("load", ready, false);
        } else {
            // must be IE
            document.attachEvent("onreadystatechange", readyStateChange);
            window.attachEvent("onload", ready);
        }

文檔准備就緒后,也有可能要注冊該事件。 如果是這樣,您的事件處理程序將永遠不會被調用,因為該事件已經發生。 您可以在安裝事件處理程序之前檢查文檔狀態,以查看它是否已經准備就緒,如下所示:

if (document.readyState === "complete") {

同樣,這里顯示了完整的邏輯: 純JavaScript等效於jQuery的$ .ready()如何在頁面/ dom准備就緒時調用函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM