Это происходит из-за того, что вы стерли старый DOM, к которому были подключены события, и заменили его совершенно новым, другим DOM, который, как оказалось, имеет тот же HTML.
Предположительно, вывыбираем этот подход, потому что зона печати определяется во время выполнения.Менее разрушительным решением может быть создание нового <iframe>
и копирование в него нужной разметки;затем вызовите print()
в iframe.Что-то вроде:
var printElement = function(element) {
var frame = document.createElement('iframe');
document.appendChild(frame);
frame.contentDocument.innerHTML = element.innerHTML;
frame.contentWindow.print();
document.removeChild(frame);
};
Вам также необходимо скопировать любые ссылки CSS в <iframe>
.
(обратите внимание, что это псевдокод, а не проверено)