0

我正在使用 dojo 编写一个单页网站。教程描述了如何使用 dojo/request 来发出 ajax 请求。我可以简单地发出请求,接收 html 内容并将其插入内容面板(div 元素)。这也在样本中得到证明。

当我开始加载具有某些所需功能的真实内容时,我还需要向 ajax 调用请求的内容添加一个脚本元素。问题是接收到的带有 ajax 内容的脚本没有被执行。

我尝试使用contentNode.innerHTML = data;并且domConstruct.place(data, contentNode, "only"); 在这两种情况下都显示了内容,但未执行内容中的脚本。

据我了解,还有一个dijit.layout.ContentPane更适合在设计时加载内容,而不是运行时。

在加载内容之前我无法执行脚本,因为在每个页面中都有一些我需要处理的元素,而且它们很简单,在加载主页时不可用。例如,我需要更改表单提交行为。

那么我该怎么做才能执行加载的脚本呢?

4

1 回答 1

1

有一个dojox.layout.ContentPane提供从加载的内容执行脚本的能力。

请参阅此处的官方文档。它明确地解决了您的用例

如果您需要在内容窗格中执行 JavaScript,请使用 dojox/layout/ContentPane 而不是 dijit/layout/ContentPane 并设置 executeScripts=”true”。实际上,executeScripts 默认为“true”,但可能是关于您使用 dojox/layout/ContentPane 的原因的视觉提示。

于 2013-10-29T20:57:10.843 回答