设置popupWindow.innerHTML = largeString时出现chrome崩溃

时间:2016-09-25 11:11:35

标签: javascript google-chrome-extension

我必须每分钟登录

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;

在这个过程之后,我的铬被撞坏了并且全部冻结了。任何正确的方法来做到这一点?我用不同的电脑测试,结果是一样的。

2 个答案:

答案 0 :(得分:0)

作为一种解决方法,请考虑创建许多元素:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />

<div class="row">
  <div class="col-md-12" style="background-color:pink;height:74px;"></div>
</div>

<div class="blue-cirle-div">
  <img src="http://placehold.it/72" class="img-circle" width="72" height="72" />
</div>

<div class="row">
  <div class="col-md-12 center-children" style="background-color:yellow;height:74px;">

    <img src="http://placehold.it/120" class="photos" />
    <img src="http://placehold.it/120" class="photos" />

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

答案 1 :(得分:0)

考虑使用元素数组而不是字符串来存储日志。这样,您可以使用log.forEach(function(html) { logWindow.document.body.insertAdjacentHTML('beforeend', '<span>' + html + '</span>'); }); 逐渐将元素(使用循环)添加到appendChild,并可能避免崩溃。

日志代码:

logWindow

弹出代码:

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