如何XHR
在 a 中显示 responseText的 HTML 内容DIV
并去掉它的<script>
标签并将它们附加到head
标签中?(使用谷歌关闭)
类似于Prototype JS 中的extractScripts。
如何XHR
在 a 中显示 responseText的 HTML 内容DIV
并去掉它的<script>
标签并将它们附加到head
标签中?(使用谷歌关闭)
类似于Prototype JS 中的extractScripts。
如果 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。