-1

如何XHR在 a 中显示 responseText的 HTML 内容DIV并去掉它的<script>标签并将它们附加到head标签中?(使用谷歌关闭)

类似于Prototype JS 中的extractScripts

4

1 回答 1

0

如果 responseText 是带有 HTML 和 script 标签的整个网页,那么也许您应该将其附加到 iFrame 和 iFrame src 并让浏览器为您管理所有内容,而不是将其放在您必须管理的 DIV 中网页的不同部分。

如果您真的想获取 responseText 并将其直接放入您自己文档中的 div 中,那么您有几个选择。

首先,如果响应只是一个带有嵌入脚本标签的 HTML 片段(而不是整个网页),那么您可以将整个响应读入 JS 变量,然后将其分配给 DIV 的 .innerHTML 属性。浏览器将解析 HTML,包括嵌入的标签并评估它,就好像它最初是该 div 的一部分(除了脚本执行时间显然要等到您分配 .innerHTML 之后。

举个例子:

var myDiv = document.getElementById("myDiv");
myDiv.innerHTML = responseText;

其次,如果出于某种原因您想单独提取标签(与第一个选项相比,我想不出这样的原因),那么您必须自己从 responseText 中解析开始和结束脚本标签,将它们之间的 JS 代码文本放入 JS 变量中,并在该变量上使用 eval 来执行它并使其成为文档的一部分。然后,将剩余的 HTML 分配给 div 的 innerHTML 属性,如上例所示。

如果该脚本中包含 document.write,则第二种方式将不起作用,因为 document.write 没有位置上下文。如果这些脚本标签依赖于任何页面加载方法,例如 onload,那么脚本也不会看到这些事件(除非它是 iFrame.src 的 src。

于 2011-06-30T08:42:33.117 回答