Html2Canvas выдает ошибку "невозможно получить свойство 'content' с неопределенной или нулевой ссылкой в ​​IE11 и EDGE - PullRequest
0 голосов
/ 23 января 2019

Я использую 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, которые все еще не работали.Любая помощь приветствуется.

...