gpt4 book ai didi

javascript - 文档上的write()使Internet Explorer 11崩溃

转载 作者:行者123 更新时间:2023-12-03 15:48:45 27 4
gpt4 key购买 nike

以下代码可在chrome和Safari中使用,但会使IE11中的网站崩溃:

var doc = document.implementation.createHTMLDocument("");
doc.open("replace");
doc.write(document.querySelector("html").outerHTML);
doc.close()

我正在尝试做的是创建DOM的副本(不加载脚本/图像等)进行操作。知道为什么这会导致IE崩溃吗?有一个更好的方法吗?我正在为externalHTML使用polyfill(尽管我认为IE11支持该功能),并且可以确认externalHTML是否按预期工作。

先感谢您!

最佳答案

似乎不是导致IE11崩溃的write()方法,而是与close()有关。在类似问题上找到的最佳答案
Why won't this JavaScript (using document.open and document.write) work in Internet Explorer or Opera?发现不包括close()调用可以阻止IE崩溃。

我自己也有类似的问题:

var doc = document.implementation.createHTMLDocument('');
doc.open();
doc.write('<body><p>Hello world</p>');
doc.close(); // This is where it breaks

但是我没有运气真正调用该方法而不破坏页面。我尝试将其添加到超时中,或者仅在完成DOM后才关闭,但似乎都失败了。我猜这是检测IE11而不调用close的情况。
if (!(window.ActiveXObject) && "ActiveXObject" in window) {
// IE11, do nothing... may cause memory leaks...
} else {
doc.close();
}

我只尝试了IE11,但在早期版本的IE中也可能会崩溃...在这种情况下,请使用
if ("ActiveXObject" in window) {
// IE, do nothing... may cause memory leaks...
} else {
doc.close();
}

希望这可以帮助遇到相同问题的任何人。

关于javascript - 文档上的write()使Internet Explorer 11崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574705/

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