现在,我使用AJAX获取页面的HTML,并使用jQuery修改DOM,我可以完美地完成这一部分。
我使用以下代码加载新的HTML:
document.body.parentElement.innerHTML = newDoc.body.parentElement.innerHTML;
它加载了全新的HTML,问题是它没有加载所有脚本,所以我找到了解决方案:
https://ghinda.net/article/script-tags/
此问题是内联具有document.write,因为它会覆盖整个页面。
例如:
<script>document.write("Hello");</script>
在原始脚本上,它会写入放置位置,而不会覆盖整个文档。
我不想使用document.write加载新文档,因为某些浏览器不尊重脚本的加载,我发现这种方法更好。
答案 0 :(得分:0)
我找到了一种方法,可以覆盖document.write函数。
对此:
document.write = function() {
var e = Array.prototype.join.call(arguments, "");
if (document.currentScript) document.currentScript.insertAdjacentHTML("beforebegin", e);
else {
var t = document.getElementsByTagName("script");
t[t.length - 1].insertAdjacentHTML("beforebegin", e)
}
};
我希望有人觉得这有用