2016-09-25 2 views
0

Я должен получить войти через каждые минутхром сбой при настройке popupWindow.innerHTML = largeString

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; 

после этого процесса мой хром упал и все замерзло. любой правильный способ сделать это? Я тестирую разные компьютеры, и результаты одинаковы.

+0

Похоже предыдущее содержимое застрял в куче: https://bugs.chromium.org/p/v8/issues/detail? id = 2869 – wOxxOm

+0

@wOxxOm большое спасибо – spyagentsss

ответ

0

В качестве временного решения рассмотреть вопрос о создании многих элементов:

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

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

Рассмотрим использование массива элементов, а не строку, чтобы сохранить ваш журнал. Таким образом, вы можете использовать appendChild, чтобы постепенно добавлять элементы (используя цикл) в logWindow и, возможно, избегать сбоя.

код

Log:

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]) 
} 
+0

[importNode()] (https://developer.mozilla.org/docs/Web/API/Document/importNode) требуется добавить элемент из другого документа. – wOxxOm

Смежные вопросы