Html2canvas: Problema de IE 11, Error: No detectado (en promesa): Error: Miembro no encontrado.

Creado en 8 ene. 2018  ·  36Comentarios  ·  Fuente: niklasvh/html2canvas

Error obtenido: "html2canvas $ npm_package_version. Error: No detectado (en promesa): Error: Miembro no encontrado".
Cuando intento conseguir canvas.

Código:
html2canvas (document.querySelector ("# captura")). luego (función (lienzo) {
console.log (lienzo);
document.getElementById ('aquí-aparecen-las-imágenes'). appendChild (lienzo);
});
Utilizando:
Versión angular: 4.0.1
SO: Ventana 10
También se agregó la referencia de: https://cdn.jsdelivr.net/npm/es6-promise/dist/es6-promise.auto.js
Captura de pantalla de error adjunta.

error_ie_11

Needs More Information

Comentario más útil

¡¡Arreglado!!
Abrir node_modules/html2canvas/dist/html2canvas.js
Buscar if (rule && rule.cssText)
y cámbielo a if (rule && typeof rule.cssText === 'string')
Esto me solucionó el problema en IE11 :)

Todos 36 comentarios

Agregué un enlace a la siguiente biblioteca de promesas y pareció arreglar IE 11 para nosotros.
https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js

Sin código para reproducir el error, realmente no puedo ayudar.

Hola @niklasvh ,

Esta es una muestra de demostración que he alojado en GitHub que puede ver - GitHub Html2Canvas Demo

El código completo también se carga en github, si desea ver: Paquete de código

Cómo ejecutar el proyecto:
1) Descomprimir el paquete
2) Ejecute el comando: "npm install" desde el directorio para instalar la dependencia
3) Para ejecutar el comando del proyecto: "npm start"

Hola @ jelkins8 ,

He probado esta solución pero no me funciona.
Esta es una muestra de demostración que he alojado en GitHub que puede ver - GitHub Html2Canvas Demo

Gracias

Hola @niklasvh ,
Yo también probé con es6-promise y bluebird sin éxito en IE11, puedo confirmar que GitHub Html2Canvas Demo también falla en IE para mí.
Recibo html2canvas: Error: Member not found. seguido de Possible Unhandled Promise Rejection: Error: Member not found.
¡Gracias!

actualizado, después de usar el polyfill bluebird, mi seguimiento de pila es:

Error: Member not found.
at Anonymous function (eval code:213:21)
   at createElementClone (eval code:212:17)
at cloneNode (eval code:225:13)
at cloneNode (eval code:248:25)
at cloneNode (eval code:248:25)
 at DocumentCloner (eval code:53:9)
at cloneWindow (eval code:505:5)
at Anonymous function (eval code:53:9)
at r (https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js:31:6804)
at r.prototype._settlePromiseFromHandler (https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js:30:12222)

Estoy enfrentando el mismo problema para html2canvas: miembro no encontrado para IE.
Para el cromo, funciona perfectamente bien.
Actualice si hay alguna solución. Gracias

He reproducido el problema y he localizado la causa, sucede en la función createElementClone cuando intenta acceder a la propiedad cssText , por alguna razón al usar font-awesome, un elemento con fa-spin arroja este error en IE al acceder a la propiedad.

Como sigue funciona:

if (node instanceof HTMLStyleElement && node.sheet && node.sheet.cssRules) {
              var style = node.cloneNode(false);
                  var css = [].slice.call(node.sheet.cssRules, 0).reduce(function (css, rule) {
                    try {
                      if (rule && rule.cssText) {
                        return css + rule.cssText;
                      }
                      return css;
                    } catch (err) {
                      _this3.logger.log('Unable to access cssText property', rule.name);
                    }
                  }, '');
                  style.textContent = css;

                return style;
            }

Tenga en cuenta el intento ... atrapar.

Levantaré un PR.

Parece causar una regresión en Firefox 58.0.0 (Linux 0.0.0) /tests/reftests/background/radial-gradient2.html Should render untainted canvas FAILED @niklasvh Firefox 58.0.0 (Linux 0.0.0) /tests/reftests/background/radial-gradient2.html Should render untainted canvas FAILED Alguna posibilidad de que pudieras echar un vistazo?

Gracias

Hola @niklasvh ,
¿Tiene alguna solución para esto? ¿Alguien está mirando este problema?

Gracias

Hola @ Prabhat2404 , la solución que propuse en https://github.com/niklasvh/html2canvas/pull/1415 funciona muy bien para mí, sin embargo, falla una de las pruebas de gradiente radial, que le pedí a

el mismo problema aqui

El problema sigue existiendo para IE en caso de que intentemos imprimir código html.
¿Existe alguna solución para no modificar el código fuente de la biblioteca y resolver el problema?

+1

+1

+1

¡Me ayuda!

@evgenyjam Esa solución todavía tiene un error, debe agregar una cadena vacía como valor inicial para reducir.

Lo mencioné en el PR, pero el autor aún no lo ha actualizado. Pero con ese cambio me funciona.

@cyouden de esta manera?
.reduce (("", css, regla) => {

@BrunoMarc No, es el último argumento para reducir, así que:
.reduce ((css, rule) => {/ * código * /}, "")

(Por ejemplo, vea el código que se propone reemplazar el cambio en esa diferencia, usa correctamente el valor inicial para reducir).

@cyouden ¡ Gracias por la respuesta! He insertado este código en html2canvas.js pero el miembro que no se encuentra aún persiste, ¿alguna idea?
if (instancia de nodo de HTMLStyleElement && node.sheet && node.sheet.cssRules) {
const css = [] .slice
.call (node.sheet.cssRules, 0)
.reduce ((css, regla) => {
tratar {
if (regla && regla.cssText) {
return css + rule.cssText;
}
return css;
} atrapar (err) {
this.logger.log ('No se puede acceder a la propiedad cssText', rule.name);
return css;
}
}, '');
const style = node.cloneNode (falso);
style.textContent = css;
estilo de retorno;
}

@BrunoMarc No

Oye, lamento llegar tarde a la fiesta, acabo de realizar un cambio con la cadena vacía predeterminada para la reducción, como se sugirió, ¡espero que ayude!
salud

@niklasvh @BrunoMarc @cyouden buenas noticias la construcción está pasando para el PR
Lo siento, no actualicé antes, en realidad había pasado de mover la biblioteca, me encontré con el error mientras la usaba en un pico. ¡Espero eso ayude!

@simonpinn Estoy tratando de usar la versión html2canvas-1.0.0-alpha.10 para mi código angular 4. Recibo el siguiente error en todos los navegadores. Y solo se imprime una parte de html.

34487ms html2canvas: html2canvas $ npm_package_version
core.js: 1427 ERROR Error: No detectado (en promesa): indefinido
en resolvePromise (zone.js: 824)
en resolvePromise (zone.js: 795)
en eval (zone.js: 873)
en ZoneDelegate.invokeTask (zone.js: 425)
en Object.onInvokeTask (core.js: 4747)
en ZoneDelegate.invokeTask (zone.js: 424)
en Zone.runTask (zone.js: 192)
en DrainMicroTaskQueue (zone.js: 602)
en ZoneTask.invokeTask [como invocar] (zone.js: 503)
en invokeTask (zone.js: 1540)
defaultErrorLogger @ core.js: 1427
ErrorHandler.handleError @ core.js: 1488
Logger.js: 36 83270ms html2canvas: árbol de nodos de análisis finalizado
Valor no válido proporcionado para Longitud: "auto"

@simonpinn Estoy usando la forma siguiente. ¿Hay algún problema con la última versión 1.0.0-alpha.10 en el código tyscript (angular 4)? ¿Me pueden ayudar con la solución? Estoy muy necesitado.

image

@bandacs este problema es para resolver un error de IE 11 por promesas no detectadas, por favor plantee un problema contra la compilación alpha.10, si tiene algún problema.

Gracias

@simonpinn @cyouden
Seguimiento del defecto anterior. Encontré la otra biblioteca (dom-to-image) para los navegadores Chrome y Firefox. Pero el problema aún continúa en IE. Cuando repaso la conversación anterior, llegué a saber que la solución de cadena vacía corrige el defecto. ¿Eso funciona? ¿También puedo saber cuándo se incluirá ese cambio en la biblioteca?

Corrección fusionada en v1.0.0-alpha.11

Tengo el proyecto reactjs e hice la instalación de npm para las actualizaciones de html2canvas. pero en el navegador IE 11 todavía me muestra el error de miembro no encontrado. Por favor ayuda. Comprobé en el sistema Windows 8

Estoy usando v1.0.0-alpha.11 y funciona muy bien en Chrome, pero aparece un error en IE 11 en las mismas líneas
html2canvas (panel). luego (lienzo => {
var img = canvas.toDataURL ("imagen / png");
});

Hola. El mismo error para mí. Nuestro cliente usa IE11 por defecto ...

¡¡Arreglado!!
Abrir node_modules/html2canvas/dist/html2canvas.js
Buscar if (rule && rule.cssText)
y cámbielo a if (rule && typeof rule.cssText === 'string')
Esto me solucionó el problema en IE11 :)

Hola a todos,
También tengo el siguiente problema que se solucionó:
Abra node_modules / html2canvas / dist / html2canvas.js
Busque if (rule && rule.cssText)
y cámbielo a if (rule && typeof rule.cssText === 'string')
Esto me solucionó el problema en IE11 :)

¿Cómo puedo obtener una nueva versión publicada para usar en mi proyecto? Actualmente probé editando en módulos de nodo en mi entorno local. para impulsar su producción, ¿necesita una nueva versión publicada de la versión 'html2canvas'? ¿puedes ayudarme a conseguirlo?

Actualmente estoy usando "html2canvas": "^ 1.0.0-rc.1", que no tiene la solución.

Hola @niklasvh , ¿puedes decirme cuándo se lanzará la nueva versión con la solución para el problema # 1374? Esperando ansiosamente ver la corrección en la versión.

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