В чем смысл этой ошибки? и как это исправить
Элемент, который вы пытаетесь отобразить, не находится в DOM документа.
Итак, как исправить эту проблему?
0.5 в порядке, но когда я обновился до 1, я получил эту ошибку
Поделитесь примером на jsfiddle
Я попытался загрузить html2canvas js (версия 1) и мое приложение js после тела HTML, и эта проблема была исправлена для меня.
Есть ли у кого-нибудь исправление этой проблемы, у меня такая же проблема при использовании на странице cshtml ASP.Net MVC.
Если вы используете jQuery для поиска DIV, используйте
html2canvas ($ ("# element") [0]). then (function (canvas) {
$ ("# элемент-выход"). append (холст);
});
Но я не могу сделать изображение карты Google с помощью html2canvas (все изображения карты не появляются). Может ли кто-нибудь помочь мне, как сделать то же самое в cshtml ???
@cjcortez @RaghavPrabhu исправляет ли вышеприведенное решение smartbepl для вас, предполагая, что вы используете jQuery или другую библиотеку, которая предоставляет список элементов вместо одного Element
?
У меня это работает!
html2canvas ($ ('# div'). get (0)). then (function (canvas) {
console.log (холст);
});
спасибо, это сработало
@jeremielodi Спасибо, это
Я пробовал код, аналогичный приведенному выше, но, возможно, ошибка, которую я получаю, не совсем связана: Uncaught (in prom) undefined ... Promise rejected (async)
У меня была точно такая же проблема - я хотел вызвать HTML2Canvas при нажатии кнопки. Независимо от того, как я писал вызов HTML2Canvas, я получал ошибку «Uncaught (in prom) undefined ... Promise rejected (async)». Наконец, я немного узнал о том, как работают обещания, и обнаружил, что решение добавляет уловку:
function myFunction() {
html2canvas(document.querySelector("#capture")).then(canvas => {
var base64encodedstring = canvas.toDataURL("image/jpeg", 1).replace("data:image/jpeg;base64,", "");
j$("[id$='inputHidden']").val(base64encodedstring);
console.log('Saving...');
mySaveFunction();
})
.catch(function (error) {
/* This is fired when the promise executes without the DOM */
});
}
Предупреждение: я новичок в javascript и очень мало понимаю, как работают обещания. Мой код отлично работал без .catch (), если я использовал его вне функции. Я предполагаю, что каким-то образом, когда вы инкапсулируете его, у него больше нет правильного доступа к DOM, и обещание не выполняется.
@ikemike, это может тебе помочь
`` html
@niklasvh с последней версией html2canvas. Я получаю ошибку Uncaught (в обещании): undefined. Не могли бы вы мне помочь.
ths , это работает
Для меня это отлично работает:
function downloadURI(uri, name) {
var link = document.createElement("a");
link.download = name;
link.href = uri;
document.body.appendChild(link);
link.click();
clearDynamicLink(link);
}
function DownloadAsImage() {
var element = $("#table-card")[0];
html2canvas(element).then(function (canvas) {
var myImage = canvas.toDataURL();
downloadURI(myImage, "cartao-virtual.png");
});
}
в хроме работает нормально, но в IE11 не работает ... T_T;
Непойманный (в обещании): неопределенная ошибка
@bandacs вы нашли решение этого? Я получаю точную ошибку на вашем снимке экрана.
Я использую версию 1.0 alpha 12, и у меня такая же проблема. Я пробовал все эти решения.
Я пробовал это решение от @smartbepl
html2canvas ($ ("# element") [0]). then (function (canvas) {
$ ("# элемент-выход"). append (холст);
});
Я пробовал это от @jeremielodi
html2canvas ($ ('# div'). get (0)). then (function (canvas) {
console.log (холст);
});
Я также попробовал решение leandrocgsi и попытался добавить уловку, как предлагает @ikemike .
Чтобы упростить его и обеспечить загрузку всех элементов в DOM, я помещаю функцию take_screenshot ().
функция take_screenshot ()
{
html2canvas ($ (". image__container") [0]). then (canvas => {
console.log («пожалуйста, работайте, я схожу с ума»);
});
}
Затем я вызываю take_screenshot () прямо из консоли javascript, чтобы убедиться, что все загружено.
Я получаю ту же ошибку Uncaught (в обещании) undefined.
У меня точно такая же проблема, с которой столкнулся https://github.com/niklasvh/html2canvas/issues/1313#issuecomment -377132089
Может кто-нибудь нашел решение по этому вопросу?
почему я потерпел неудачу в чирио?
.get(url)
.end((err, res) => {
cheerio.load(res.text)
html2Canvas($('#statuses').get(0), {
allowTaint: true
}).then(function(canvas) {})
})
Uncaught (in promise) Error: Element is not attached to a Document
Теперь есть еще одно соглашение о вызовах.
Версия 0.5 ожидала узел в массиве, а теперь вы даете его напрямую.
В версии 0.5 была опция «onrendered», а теперь вы используете конструкцию «then».
Самый полезный комментарий
Если вы используете jQuery для поиска DIV, используйте
html2canvas ($ ("# element") [0]). then (function (canvas) {
$ ("# элемент-выход"). append (холст);
});