【发布时间】:2016-05-30 20:33:48
【问题描述】:
document.getElementById('my_id').innerHTML = 'A message';
// Next should only be executed once DOM manipulation has completed
.. do some stuff
我见过这个jQuery/Javascript - How to wait for manipulated DOM to update before proceeding with function,它建议使用 setTimeOut。
document.getElementById('my_id').innerHTML = 'A message';
setTimeout(function(){
.. do some stuff
},10);
但是,这是一场比赛,我不喜欢。我需要确定,也不想浪费时间等待。其中一个 cmets 表示,即使 0ms 也可以工作,因为它会将其放入队列中,并保证仅在 DOM 操作完成后才执行。这是绝对肯定的吗?如果是这样,这个状态在哪里或经过测试?
(当然,操作可能比这个例子更复杂。插入的 HTML 甚至可能包含自己执行的 javascript。插入的 JS 执行不必完成,但渲染必须已经完成。)
【问题讨论】:
-
如果只是检测渲染阶段,只需要监听合适的事件。
-
什么活动?这不是初始加载,而是通过 JS 进行 DOM 操作。
-
请阅读我的回答:当您修改 DOM(添加节点、删除节点等)时,会触发一些事件。只要寻找你的并听它:-)
-
嗨,你解决了吗?
标签: javascript jquery