Html2canvas: No capturado (en promesa) El elemento proporcionado no está dentro de un documento

Creado en 14 dic. 2017  ·  23Comentarios  ·  Fuente: niklasvh/html2canvas

¿Cuál es el significado de este error? Y como arreglarlo

Needs More Information

Comentario más útil

Si usa jQuery para encontrar el uso de DIV
html2canvas ($ ("# elemento") [0]). luego (función (lienzo) {
$ ("# elemento-out"). append (lienzo);
});

Todos 23 comentarios

El elemento que está intentando representar no está dentro del DOM del documento

Entonces, ¿cómo solucionar este problema?

0.5 está bien, pero cuando actualizo a 1 recibí este error

Comparte un ejemplo en jsfiddle

Intenté cargar html2canvas js (versión 1) y mi aplicación js después del cuerpo HTML y este problema se solucionó.

¿Alguien tiene una solución para este problema? Tengo el mismo problema mientras uso en la página ASP.Net MVC cshtml.

Si usa jQuery para encontrar el uso de DIV
html2canvas ($ ("# elemento") [0]). luego (función (lienzo) {
$ ("# elemento-out"). append (lienzo);
});

Pero no puedo tomar una imagen del mapa de Google usando html2canvas (no vienen todas las imágenes del mapa), ¿alguien puede ayudarme a hacer lo mismo en cshtml?

@cjcortez @RaghavPrabhu ¿La solución de smartbepl anterior lo soluciona asumiendo que está usando jQuery o alguna otra biblioteca que proporcione una lista de elementos en lugar de un solo Element ?

¡Esto funciona para mí!
html2canvas ($ ('# div'). get (0)). luego (función (lienzo) {
console.log (lienzo);
});

gracias funcionó

@jeremielodi Gracias, ¡esto me estaba volviendo loco!

Probé un código similar al anterior, pero tal vez el error que recibo no esté del todo relacionado: No detectado (en promesa) indefinido ... Promesa rechazada (asincrónica)

Estaba teniendo exactamente el mismo problema: quería llamar a HTML2Canvas al hacer clic en el botón. No importa cómo escribí la llamada HTML2Canvas, obtendría un error "No capturado (en promesa) indefinido ... Promesa rechazada (asincrónica)". Finalmente, aprendí un poco sobre cómo funcionan las promesas y descubrí que la solución era agregar una trampa:

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

Una advertencia, soy un novato total en javascript y entiendo muy poco sobre cómo funcionan las promesas. Mi código funcionó bien sin el .catch () si lo usé fuera de una función. Supongo que de alguna manera, cuando lo encapsula, ya no tiene el acceso DOM correcto y la promesa falla.

@ikemike esto puede ayudarte
`` `html


html2canvas


@niklasvh con la última versión de html2canvas obtengo Uncaught (en promesa): error indefinido. Podrías ayudarme.

image

image

esto, funciona

Esto funciona bien para mi:

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

en Chrome, funciona bien, pero en IE11, no funciona ... T_T;

Uncaught (en promesa): error indefinido

@bandacs , ¿encontraste una solución a esto? Recibo un error exacto como captura de pantalla.

Estoy usando la versión 1.0 alpha 12 y tengo el mismo problema. Probé todas estas soluciones.

Probé esta solución por @smartbepl
html2canvas ($ ("# elemento") [0]). luego (función (lienzo) {
$ ("# elemento-out"). append (lienzo);
});

Probé esto por @jeremielodi
html2canvas ($ ('# div'). get (0)). luego (función (lienzo) {
console.log (lienzo);
});

También probé la solución leandrocgsi e intenté agregar una captura como sugiere @ikemike .

Para simplificarlo y asegurar que todos los elementos estén cargados en el DOM, coloco una función llamada take_screenshot ().

función take_screenshot ()
{
html2canvas ($ (". image__container") [0]). luego (canvas => {
console.log ('por favor trabaja, estoy perdiendo la cabeza');
});
}
Luego llamo a take_screenshot () directamente desde la consola de JavaScript para asegurarme de que todo esté cargado.
Recibo el mismo error Uncaught (en promesa) indefinido.

Tengo exactamente el mismo problema que enfrenta https://github.com/niklasvh/html2canvas/issues/1313#issuecomment -377132089
¿Alguien puede encontrar una solución a este problema?

¿Por qué fallé en 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

Ahora hay otra convención de convocatorias.
La versión 0.5 esperaba el nodo en una matriz, mientras que ahora lo da directamente.
La versión 0.5 tenía la opción "onrendered", mientras que ahora usa la construcción "then".

¿Fue útil esta página
0 / 5 - 0 calificaciones