Html2canvas: Não capturado (em promessa) O elemento fornecido não está em um documento

Criado em 14 dez. 2017  ·  23Comentários  ·  Fonte: niklasvh/html2canvas

Qual é o significado desse erro? e como consertar isso

Needs More Information

Comentários muito úteis

Se você usar jQuery para encontrar o uso de DIV
html2canvas ($ ("# element") [0]). then (function (canvas) {
$ ("# saída do elemento"). append (tela);
});

Todos 23 comentários

O elemento que você está tentando renderizar não está no DOM do documento

Então, como consertar esse problema?

0,5 é bom, mas quando eu atualizo para 1, recebo este erro

Por favor, compartilhe um exemplo no jsfiddle

Tentei carregar o html2canvas js (versão 1) e meu aplicativo js após o corpo do HTML e esse problema foi corrigido para mim.

Alguém conseguiu uma correção para esse problema, eu tenho o mesmo problema ao usar a página cshtml ASP.Net MVC.

Se você usar jQuery para encontrar o uso de DIV
html2canvas ($ ("# element") [0]). then (function (canvas) {
$ ("# saída do elemento"). append (tela);
});

Mas não consigo tirar a imagem do google map usando html2canvas (nem todas as imagens do mapa estão vindo), alguém pode me ajudar como fazer o mesmo em cshtml ???

@cjcortez @RaghavPrabhu a solução da smartbepl acima corrige isso para você, presumindo que você esteja usando jQuery ou alguma outra biblioteca que forneça uma lista de elementos em vez de um único Element ?

Isso funciona para mim!
html2canvas ($ ('# div'). get (0)). then (function (canvas) {
console.log (tela);
});

obrigado funcionou

@jeremielodi Obrigado, isso estava me deixando louco!

Tentei um código semelhante ao acima, mas talvez o erro que estou recebendo não esteja totalmente relacionado: Não capturado (em promessa) indefinido ... Promessa rejeitada (assíncrona)

Eu estava tendo exatamente o mesmo problema - queria chamar HTML2Canvas no clique do botão. Não importa como eu escrevesse a chamada HTML2Canvas, eu receberia um erro "Não capturado (em promessa) indefinido ... Promessa rejeitada (assíncrona)". Por fim, aprendi um pouco sobre como funcionam as promessas e descobri que a solução era adicionar uma pegadinha:

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 */    
        });
}

Aviso, sou um novato total em javascript e entendo muito pouco sobre como funcionam as promessas. Meu código funcionou bem sem o .catch () se eu o usei fora de uma função. Estou presumindo que, de alguma forma, quando você o encapsula, ele não tem mais o acesso DOM correto e a promessa falha.

@ikemike isso pode te ajudar
`` `html


html2canvas


@niklasvh com a versão mais recente do html2canvas Estou recebendo Uncaught (em promessa): erro indefinido. Você pode por favor me ajudar.

image

image

isso funciona

Este trabalho é bom para mim:

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");
    });
}

no cromo funciona bem, mas no IE11 não funciona ... T_T;

Não capturado (em promessa): erro indefinido

@bandacs você encontrou uma solução para isso? Estou recebendo o erro exato em sua captura de tela.

Estou usando a versão 1.0 alpha 12 e estou tendo o mesmo problema. Tentei todas essas soluções.

Eu tentei essa solução por @smartbepl
html2canvas ($ ("# element") [0]). then (function (canvas) {
$ ("# saída do elemento"). append (tela);
});

Eu tentei isso por @jeremielodi
html2canvas ($ ('# div'). get (0)). then (function (canvas) {
console.log (tela);
});

Eu também tentei a solução leandrocgsi e tentei adicionar uma captura como @ikemike sugere.

Para simplificar e garantir que todos os elementos sejam carregados no DOM, coloco uma função chamada take_screenshot ().

função take_screenshot ()
{
html2canvas ($ (". image__container") [0]). then (canvas => {
console.log ('por favor, trabalhe, estou perdendo a cabeça');
});
}
Em seguida, chamo take_screenshot () diretamente do console javascript para garantir que tudo seja carregado.
Recebo o mesmo erro Não capturado (em promessa) indefinido.

Tenho exatamente o mesmo problema enfrentado por https://github.com/niklasvh/html2canvas/issues/1313#issuecomment -377132089
Alguém pode encontrar uma solução para este problema?

porque eu falhei na Cheerio?

   .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

Há outra convenção de chamada agora.
A versão 0.5 esperava o nó em um array, enquanto você agora o dá diretamente.
A versão 0.5 tinha a opção "onrendered", enquanto você agora usa a construção "then".

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

yasergh picture yasergh  ·  5Comentários

celik75 picture celik75  ·  4Comentários

tjchambers32 picture tjchambers32  ·  3Comentários

anthonymejia picture anthonymejia  ·  4Comentários

deepender87 picture deepender87  ·  4Comentários