chrome崩溃,而设置弹出窗口.innerHTML = largeString

chrome crash while setting popupWindow.innerHTML = largeString

本文关键字:窗口 innerHTML largeString 崩溃 设置 chrome      更新时间:2023-09-26

我必须每分钟获取一次日志

var log = '';
setInterval(function(){
log += document.getElementById('div').innerHTML; //full of html tag
},60000);

和几个小时后

log.length // > 300000

现在显示在新窗口

var logWindow = window.open("", "MsgWindow", "width=400,height=600");
logWindow.document.getElementsByTagName("body")[0].innerHTML = log;

在这个过程之后,我的chrome崩溃了,所有冻结。有什么合适的方法吗?我用不同的电脑测试了一下,结果都是一样的。

可以考虑创建多个元素:

var log = [];
setInterval(function() {
  log.push(document.getElementById('div').innerHTML);
}, 60000);

log.forEach(function(html) {
    logWindow.document.body.insertAdjacentHTML('beforeend', '<span>' + html + '</span>');
});

考虑使用元素数组而不是字符串来存储日志。这样,您可以使用appendChild逐渐向logWindow添加元素(使用循环),并可能避免崩溃。

日志代码:

var log = [];
setInterval(function() {
    log.push(document.getElementById('div'))
}, 60000);

弹出代码:

for (var i = 0; i < log.length; i++) {
    logWindow.document.getElementsByTagName("body")[0].appendChild(log[i])
}