2012-07-16 70 views
11

我已經完成了很多關於這個問題的解決方案,但到目前爲止還沒有發現可以跨瀏覽器工作的解決方案。如何檢測innerHTML何時完成

我需要的是一個原始的javascript函數,它將接收一個元素並在innerHTML成功插入到dom後執行回調。

例如

var element = document.getElementById('example'); 
     element.innerHTML = newhtml; 

    waitUntilReady(element, function(){ 
      //do stuff here... 
    }); 

因此,只需要總結一下,我需要能夠檢查元素的內容並在innerHTML完成時觸發回調。

在此先感謝您的幫助。

+1

是什麼讓你覺得你需要一個回調? – 2012-07-16 22:24:32

+0

@am不是我 - 請參閱我的意見下面Kolink的回答 – gordyr 2012-07-16 22:28:52

+1

這是你在找什麼? http://james.padolsey.com/javascript/asynchronous-innerhtml/ – noj 2012-07-16 22:22:36

回答

5

不需要這樣的功能。分配到innerHTML將立即執行,然後繼續運行任何腳本。

如果您確實需要延遲執行(例如允許瀏覽器重新繪製),請使用setTimeout,延遲時間爲1(或其他短時間間隔)。

+1

啊,如果確實如此,那麼很好。但是,這仍然留下我的原始問題。我在追加附加事件給新的html中包含的某些元素的html後直接動態插入腳本。雖然這在大多數瀏覽器上工作得很好,但老的IE 8和下面的瀏覽器似乎會返回大約50%的時間元素爲null。我的假設是,這是因爲當我試圖向其發送事件時,新插入的html並不總是「準備好」。 – gordyr 2012-07-16 22:27:38

+0

確保將腳本添加到「innerHTML」賦值後的某個頁面,並且沒有理由不起作用。 – 2012-07-16 22:28:40

+0

他們的確是。然而,舊版IE仍然只有50%的成功率。我想這個問題必須放在我的代碼的其他地方,並且我對HTML沒有做好準備的假設是錯誤的。 – gordyr 2012-07-16 22:30:38