2013-01-10 66 views
2

我想在加載DOM元素時添加事件,但元素可能尚未加入DOM。在元素加載之前在DOM中添加事件

我能想到的兩種解決方案:

(i)其附加到document.onload()。它可能需要一段時間發生之前,如果它發生,因此是不理想的

(ⅱ)檢查的DOM元素的存在與

window.setInterval(function() { 
     if (document.getElementById("id")) /* do stuff */ 
    }, 100); 

無那些非常典雅。有沒有更好的解決方案?

編輯:我忘了提,我不想使用jQuery,並希望有我在<head>腳本不接觸到的所有網頁的<body>

EDIT2:我這樣做的原因是跟蹤某些元素的正確加載,並監視它們加載多長時間以及加載是否正確。

+0

不能使用jquery? –

+0

不,我寧願遠離 –

+0

您是否有任何先驗知識可以在DOM中加載元素的位置? – Lukas

回答

0

經過一番研究,我認爲沒有更好的通用方法。 略有改善是:對檢查document.onload()和定期(保持一個變量,以確保我不做兩次)。

This page確認在正確加載DOM的情況下兩者都是安全的。

1

您可以嘗試事件代表團 ..

裝上單擊事件的文件,並檢查要上運行功能的元件..

document.onclick = function (event) { 
    //IE doesn't pass in the event object 
    event = event || window.event; 

    //IE uses srcElement as the target 
    var target = event.target || event.srcElement; 
    var id = target.id; 
    if(id === 'id'){ 
     clickEvent(id); 
    } 
}; 

function clickEvent(id){ 
    console.log("Elemennt with ID : " + id + "has been clicked !!") 
}; 
+0

謝謝,這對於點擊事件會有意義,但我試圖追蹤的事件實際上是'onload'事件本身。基本上我想確保所有元素(包括腳本和圖像)正確加載並監視它們加載所需的時間。我看不到我如何將它鏈接到用戶生成的事件。 –

相關問題