2012-07-16 158 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

相关问题