<p>html2canvas: Error al encontrar el DIV en el documento clonado</p>

Creado en 24 ene. 2018  ·  12Comentarios  ·  Fuente: niklasvh/html2canvas

Informes de errores:

El uso de element.cloneNode (true) o angular.copy (element) en HTMLElement antes de pasarlo a html2canvas devuelve este error.

html2canvas: Error al encontrar el DIV en el documento clonado
No detectado (en promesa) Error al encontrar el DIV en el documento clonado

Especificaciones:

  • html2canvas versión probada con: 1.0.0-alpha.9 "
  • Navegador y versión: Chrome 63.0.3239.132
  • Sistema operativo: Mac

Comentario más útil

Esto está arreglado ahora.
Parece que no podemos trabajar con dom como objeto en la memoria, requiere renderizado.
Añadiendo document.getElementsByTagName ('BODY') [0] .append (mainDom); resolvió mi problema.

Es solo que tengo que encargarme de la eliminación de mainDom una vez que se procesa html2canvas.

Todos 12 comentarios

El mismo problema cuando intento almacenar el lienzo en el almacenamiento local y vincularlo a otra página usando React.js

<Link to="/system">
            <button className="submitButton"  onClick={this.captureMap} >SUBMIT </button>
</Link>

   captureMap(){
      html2canvas(document.querySelector(".mapboxgl-canvas")).then(canvas => {
        // document.body.appendChild(canvas);
        var image = canvas;
        if(typeof localStorage !== "undefined"){
          localStorage.setItem('mapImg',image.toDataURL());
        }
      });
    }

Frente al mismo problema
const mainDom = document.createElement ('div');
mainDom.appendChild (domElem [0] .cloneNode (verdadero)); // domElem es un objeto dom

Cuando pasamos mainDom a html2canvas, se muestra el siguiente error.

html2canvas: Error al encontrar el DIV en el documento clonado
demo.html # / Demo / Widget: 1 No detectado (en promesa) Error al encontrar el DIV en el documento clonado

@HarishSonar ¿Puedes replicar el problema en jsfiddle?

Esto está arreglado ahora.
Parece que no podemos trabajar con dom como objeto en la memoria, requiere renderizado.
Añadiendo document.getElementsByTagName ('BODY') [0] .append (mainDom); resolvió mi problema.

Es solo que tengo que encargarme de la eliminación de mainDom una vez que se procesa html2canvas.

Solo para futuros visitantes, también tengo el mismo problema.

Terminé clonando el nodo DOM, insertándolo como el primer hijo de document.body y usando estilos CSS position: absolute; top: -16384px; width: ${originalElementWidth} . Esto es útil si necesita realizar cambios en el nodo DOM antes de capturarlo como captura de pantalla.

Además, @niklasvh , aquí está el jsfiddle si aún desea echar un vistazo: https://jsfiddle.net/bLwya8sf/1/

Hola, también encontré este problema. Y cuando activo la función html2canvas, se envían todas las solicitudes de mi proyecto. ¿Podría decirme su solución? Muchas gracias. Este es mi codigo:
public downBtn () {
var targetDom = document.querySelector ('# Box');
var copyDom = targetDom.cloneNode (verdadero);
document.body.appendChild (copyDom);
html2canvas (copyDom). then (lienzo => {
var imgData = canvas.toDataURL ('imagen / jpeg');
var img = nueva imagen ();
img.src = imgData;
img.onload = function () {
pdf.addImage (imgData, 'jpeg', 0, 0, this.width * 0.225, this.height * 0.225);
pdf.save ('pdf_2.pdf');
};
copyDom.remove ();
});

El mismo problema aquí: tuve que envolver mi SVG en un div para evitar este problema ...

El mismo problema aquí: tuve que envolver mi SVG en un div para evitar este problema ...

¿Puede hablar sobre cómo hacerlo?

Esto está arreglado ahora.
Parece que no podemos trabajar con dom como objeto en la memoria, requiere renderizado.
Añadiendo document.getElementsByTagName ('BODY') [0] .append (mainDom); resolvió mi problema.

Es solo que tengo que encargarme de la eliminación de mainDom una vez que se procesa html2canvas.

Sí, debemos trabajar con el elemento renderizado, no trabajar con dom como objeto en la memoria.

El mismo problema aquí: tuve que envolver mi SVG en un div para evitar este problema ...

¿Puede hablar sobre cómo hacerlo?

¡Seguro!
He dado un ejemplo aquí .
Funciona bien en todos los navegadores excepto en Internet Explorer 11: el enfoque html2canvas no representa nada en el PDF final ... no sé si es un problema html2canvas o jsPDF ... ¿alguna
Gracias

Esto está arreglado ahora.
Parece que no podemos trabajar con dom como objeto en la memoria, requiere renderizado.
Añadiendo document.getElementsByTagName ('BODY') [0] .append (mainDom); resolvió mi problema.
Es solo que tengo que encargarme de la eliminación de mainDom una vez que se procesa html2canvas.

Sí, debemos trabajar con el elemento renderizado, no trabajar con dom como objeto en la memoria.

¿Por qué no usas la devolución de llamada onclone? Esto le permitirá trabajar con documentClone antes de renderizar y realizar cambios en él.
Por ejemplo, tiene una tabla desplazable, un diagrama de Gantt, y desea imprimir la tabla completa con las filas ocultas visibles en un PDF.

html2canvas(document.body, {
        onclone: function(documentClone) {
            // target elements you want to change on the "documentClone" object
        })
        .then(function(canvas) {
            // print canvas with e.g: jsPDF
        });
    };

He resuelto IE11 aquí .

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

Temas relacionados

kunal886496 picture kunal886496  ·  3Comentarios

AlphaDu picture AlphaDu  ·  4Comentarios

tibewww picture tibewww  ·  4Comentarios

celik75 picture celik75  ·  4Comentarios

Josh10101010 picture Josh10101010  ·  3Comentarios