【发布时间】:2016-03-02 08:57:16
【问题描述】:
我想在页面中异步插入一些html,然后执行一些与插入的DOM相关的javascript代码。
这种尝试总是失败,因为在浏览器中渲染 DOM 比执行下一个 javascript 代码需要更多时间。
我以前遇到过这样的问题并提出了一个问题,但没有人回答。在这里:https://stackoverflow.com/questions/31935005/whats-going-on-with-dom-after-orientationchange-event
那么,我可以得到一个承诺或附加一些回调函数吗?
代码在这里:
var bubble = function bubble(type,content){
var myScroll, temp = document.createElement('div');
temp.innerHTML=content;
temp.className=type==='time'?'time':'bubble '+type;
document.getElementsByClassName('dialogue')[0].appendChild(temp);
if(type==='reply')myScroll = new IScroll('.dlg-wrapper', { mouseWheel: true });
};
【问题讨论】:
-
你是如何异步插入的,你是如何响应的。请出示您的代码。
-
@GolezTrol 代码已添加。事实上,无论代码是什么,它总是这样,只要它操纵 DOM 以导致重新渲染,然后立即在 javascript 中访问它们。您可以在我提到的链接问题中看到相同的内容。
-
那么这段代码的哪一部分被调用得太早了?我在这里没有看到任何异步发生。
-
当然是插入DOM后的代码。
-
不,不是。它只是推迟到您的脚本空闲为止。这也是of this question 的答案所建议的,顺便说一下,它还建议使用
setTimeout作为解决方案。
标签: javascript dom promise render render-html