позвольте мне попытаться оценить мои комментарии, а также предложить некоторый код:
Когда я столкнулся с этой проблемой, для меня было решено, когда я начал играть с параметрами html2canvas. Здесь вы можете найти доступные варианты.Когда вы просто хотите вызвать функцию, вы используете html2canvas(element, options)
.Так же, как предложил emran в своем ответе, вы можете передать объект в качестве второго аргумента функции html2canvas
, которая может содержать параметры создания холста.Попробуйте передать следующее:
var options = {
async : false, // setting it to false may slow the generation a bit down
allowTaint : false, // I am not sure whether it helped or not but I remember setting it
imageTimeout : 100, // this further delays loading, however this solved a similar issue for me
foreignObjectRendering : true // it depends on the browser used whether it is allowed or not
}
Затем вы можете вызывать функцию html2canvas аналогично тому, что предлагал emran, однако onrendered
больше не требуется, поскольку более новые версии html2canvas работают с .then()
var element = document.getElementById('element');
var destination = document.getElementById('destination');
html2canvas(element, options).then(function(canvas) {
destination.appendChild(canvas);
});
Обратите внимание, что на этой странице есть несколько других интересных опций, которые могут быть вам полезны.Я также могу предложить эту статью по теме, это объяснение опций и эту библиотеку , которая объединяет html2canvas и jsPDF для прямого преобразования HTML в PDF.