Я использую html2canvas
для печати полноэкранного div.Вот основной рабочий процесс:
HTML из источника div извлекается через jQuery
var html = $('#'+id).html()
Открывается новое отдельное окно
var p = window.open("", "_blank", "");
Я пишу все стили изтекущее окно в новое окно, а затем запишите html в новое окно.
p.document.write('<html><head><title>Print ' + title + '</title>');
$("head").find("link").attr("href", function (i, value) {
if (value.includes(".css")) {
doc.write('<link rel="stylesheet" type="text/css" href="' + value + '">');
}
});
p.document.write('</head><body class="print-frame" style="height:100%; overflow: hidden;">');
p.document.write('<div id="' + id + '">' + html + '</div>');
p.document.write('</body></html>');
p.document.close();
p.focus();
Это копирует HTML со стилями из исходного окна в новое окно.Это работает во всех браузерах.
Затем я использую html2canvas
для преобразования HTML-кода в новом окне в изображение:
setTimeout(function () {
var pHtml = p.document.getElementById(id);
html2canvas($(pHtml), {
//logic
});
}, 100);
Это работает в FF / Chrome / Safari.Однако, когда я использую IE11 или EDGE, я получаю эту проблему:
SCRIPT5007: Unable to get property 'content' of undefined or null reference
, которая в источнике идет от window.getComputedStyle
.
Каждый раз, когда html2canvas
вызывает getComputedStyle
для любого элемента, он возвращает null
.Связано ли это с тем, что новое окно может получить доступ к включенным в него таблицам стилей?Если это так, то можно ли в новом окне видеть эти таблицы стилей?Я добавил имя моего сайта ко всем файлам CSS, которые все еще не работали.Любая помощь приветствуется.