我有许多ajax调用,内容由dojo.place插入。我在新内容中有dojo小部件,所以我必须在“放置”内容后执行dojo.parser.parse()。
麻烦的是我找不到执行此操作。如果我把代码放在下一行,我会很快执行。我不得不把它放在一个setInterval命令中,但这是一个垃圾解决方案。
dojo.place上的oncomplete事件。帮助真的很感激。
答案 0 :(得分:2)
dojo.place()是同步的,因此在调用之后立即调用解析器应该不是问题。听起来问题是你在XHR完成之前调用解析器。
答案 1 :(得分:0)
不幸的是,您需要setTimeout,因为浏览器不会同步呈现DOM更改。如Opera博客中所述:Timing and Synchronization in JavaScript:
以下是伪代码中的示例:
headlineElement.innerHTML = "Please wait..."; performLongRunningCalculation(); headlineElement.innerHTML = "Finished!";
在Internet Explorer和Mozilla中 文字“请稍等......”永远不会 向用户显示,因为更改 仅在整个脚本之后呈现 已完成。在Opera中,另一方面 手,“请等待......”文字是 在计算时显示 运行
SO中几乎没有类似的问题:
答案 2 :(得分:0)
如果您从xhrGotten html创建DOM节点,请说
var d = document.createElement("div");
d.innerHTML = returned_html;
然后你可以解析新div,在使用dojo.place将新节点添加到文档之前创建小部件。
dojo.parser.parse(d);
dojo.place(d, ref_node, "last");