dojo.place的oncomplete事件

时间:2009-07-23 10:25:22

标签: dojo

我有许多ajax调用,内容由dojo.place插入。我在新内容中有dojo小部件,所以我必须在“放置”内容后执行dojo.parser.parse()。

麻烦的是我找不到执行此操作。如果我把代码放在下一行,我会很快执行。我不得不把它放在一个setInterval命令中,但这是一个垃圾解决方案。

dojo.place上的oncomplete事件。帮助真的很感激。

3 个答案:

答案 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");