gpt4 book ai didi

javascript - 替换文件主体,但js不运行

转载 作者:行者123 更新时间:2023-11-30 17:30:34 25 4
gpt4 key购买 nike

我尝试用XMLHttpRequest返回的responseText替换整个html内容,但是好像responseText中的js没有生效。

代码如下:

 var newContent= evt.target.responseText;

var newDoc = document.open("text/html", "replace");
newDoc.write(newContent);
newDoc.close();

即。 NewConent中的js没有运行。

有可能让它发挥作用吗?谢谢。

操作系统是 Mac,浏览器是 Chrome。

还在 Mac 上试过 Firefox,也不行。

更新:

通过另一轮评估让它工作。

document.body.innerHTML = responseText;
var arr = document.getElementsByTagName('script')
//run script inside div
for (var n = 0; n < arr.length; n++) eval(arr[n].innerHTML)

https://developer.mozilla.org/en-US/docs/Web/API/element.innerHTML HTML5 指定不应执行通过 innerHTML 插入的标记。

还尝试了建议的解决方案。

var rawtext= responseText.replace(/\<\/script\>/g,'</scrxxxxxipt>' );
var fragments= rawtext.split(/xxxxx/);
var newDoc = document.open("text/html", "replace");
for (var i=0; i<fragments.length; i++)
{
newDoc.write(fragments[i]);
}
newDoc.close();

此解决方案确实使纯 js 工作。但我有一些 requirejs 文件,但效果不是很好。

顺便说一句。我找到了基于 Can scripts be inserted with innerHTML? 的解决方案!

最佳答案

script 元素结束标记会导致 javascript 解析器出现问题。在这种情况下,您必须更改脚本元素的结束标记。

这段代码可以工作
var newDoc = document.open("text/html", "replace");<code>
</code>newDoc.write("alert('dfdfd');</scr"+"ipt>");`
来源: javascript embedding <script> tags in document.write not working

关于javascript - 替换文件主体,但js不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23166043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com