Html2canvas: Неперехваченный (в обещании) Предоставленный элемент не находится в документе

Созданный на 14 дек. 2017  ·  23Комментарии  ·  Источник: niklasvh/html2canvas

В чем смысл этой ошибки? и как это исправить

Needs More Information

Самый полезный комментарий

Если вы используете jQuery для поиска DIV, используйте
html2canvas ($ ("# element") [0]). then (function (canvas) {
$ ("# элемент-выход"). append (холст);
});

Все 23 Комментарий

Элемент, который вы пытаетесь отобразить, не находится в 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


html2canvas


@niklasvh с последней версией html2canvas. Я получаю ошибку Uncaught (в обещании): undefined. Не могли бы вы мне помочь.

image

image

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».

Была ли эта страница полезной?
0 / 5 - 0 рейтинги