Html2canvas: Problème d'IE 11, Erreur : Uncaught (en promesse) : Erreur : Member not found.

Créé le 8 janv. 2018  ·  36Commentaires  ·  Source: niklasvh/html2canvas

Erreur obtenue : "html2canvas $npm_package_version. Erreur : Uncaught (in promise) : Erreur : Member not found."
Quand j'essaie d'obtenir de la toile.

Code:
html2canvas(document.querySelector("#capture")).then(function (canvas) {
console.log(canevas);
document.getElementById('ici-apparaissent-lesimages').appendChild(canvas);
});
À l'aide de:
Version angulaire : 4.0.1
Système d'exploitation : fenêtre 10
Également ajouté la référence de : https://cdn.jsdelivr.net/npm/es6-promise/dist/es6-promise.auto.js
Capture d'écran d'erreur jointe.

error_ie_11

Needs More Information

Commentaire le plus utile

C'est corrigé !!
Ouvert node_modules/html2canvas/dist/html2canvas.js
Rechercher if (rule && rule.cssText)
et changez-le en if (rule && typeof rule.cssText === 'string')
Cela a résolu le problème pour moi dans IE11 :)

Tous les 36 commentaires

J'ai ajouté un lien vers la bibliothèque de promesses suivante et cela a semblé corriger IE 11 pour nous.
https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js

Sans code pour reproduire l'erreur, je ne peux pas vraiment aider.

Salut @niklasvh ,

Ceci est un exemple de démonstration que j'ai hébergé sur GitHub que vous pouvez voir - GitHub Html2Canvas Demo

Le code complet est également téléchargé sur github, si vous voulez voir : Package de code

Comment exécuter le projet :
1) Décompressez le paquet
2) Exécutez la commande : "npm install" à partir du répertoire pour installer la dépendance
3) Pour exécuter la commande du projet : "npm start"

Salut @jelkins8 ,

J'ai essayé cette solution mais cela ne fonctionne pas pour moi.
Ceci est un exemple de démonstration que j'ai hébergé sur GitHub que vous pouvez voir - GitHub Html2Canvas Demo

Merci

Salut @niklasvh ,
J'ai aussi essayé avec es6-promise et bluebird sans succès dans IE11, je peux confirmer que GitHub Html2Canvas Demo échoue également dans IE pour moi.
Je reçois html2canvas: Error: Member not found. suivi de Possible Unhandled Promise Rejection: Error: Member not found.
Merci!

mis à jour, après avoir utilisé le polyfill bluebird, ma trace de pile est :

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)

Je suis confronté au même problème pour html2canvas : membre introuvable pour IE.
Pour le chrome, cela fonctionne parfaitement bien.
S'il vous plaît mettre à jour si une solution. Merci

J'ai reproduit le problème et localisé la cause, cela se produit dans la fonction createElementClone lorsqu'elle tente d'accéder à la propriété cssText , pour une raison quelconque lors de l'utilisation de font-awesome, un élément avec fa-spin renvoie cette erreur dans IE lors de l'accès à la propriété.

Comme suit fonctionne:

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

Notez l'essai... attraper.

Je vais élever un PR.

Semble provoquer une régression dans Firefox 58.0.0 (Linux 0.0.0) /tests/reftests/background/radial-gradient2.html Should render untainted canvas FAILED @niklasvh avez-vous la possibilité de jeter un coup d'œil ?

Merci

Salut @niklasvh ,
Avez-vous une solution à ce problème, est-ce que quelqu'un se penche sur ce problème ?

Merci

Salut @Prabhat2404 , le correctif que j'ai proposé dans https://github.com/niklasvh/html2canvas/pull/1415 fonctionne très bien pour moi, mais il échoue à l'un des tests de gradient radial, que j'ai demandé à @niklasvh de jettes un coup d'oeil à. Le problème se produit pour moi lors de l'utilisation d'icônes de police géniales, en particulier fa-spin.

Même problème ici

Le problème existe toujours pour IE au cas où nous essaierons d'imprimer du code html.
Existe-t-il une solution de contournement pour ne pas modifier le code source de la bibliothèque et résoudre le problème ?

+1

+1

+1

ça m'aide!

@evgenyjam Cette solution a toujours un bogue, vous devez ajouter une chaîne vide comme valeur initiale pour reduce.

Je l'ai mentionné sur le PR, mais l'auteur ne l'a pas encore mis à jour. Mais avec ce changement, cela fonctionne pour moi.

@cyouden par ici ?
.reduce(("", css, règle) => {

@BrunoMarc Non, c'est le dernier argument pour réduire, donc :
.reduce((css, règle) => { /* code */ }, "")

(Par exemple, voir le code que le changement est proposé de remplacer dans ce diff, il utilise correctement la valeur initiale pour réduire.)

@cyouden Merci pour la réponse ! J'ai inséré ce code dans html2canvas.js mais le membre non trouvé persiste, des idées ?
if (instance de nœud de HTMLStyleElement && node.sheet && node.sheet.cssRules) {
const css = [].tranche
.call(node.sheet.cssRules, 0)
.reduce((css, règle) => {
essayer {
if (règle && règle.cssText) {
renvoie css + rule.cssText ;
}
retour css;
} attraper (err) {
this.logger.log('Impossible d'accéder à la propriété cssText', rule.name);
retour css;
}
}, '');
style const = node.cloneNode(false);
style.textContent = css;
style de retour ;
}

@BrunoMarc Aucune idée, ce changement était suffisant pour que cela fonctionne pour moi.

Hé - désolé d'être en retard à la fête, je viens de valider un changement avec la chaîne vide par défaut pour la réduction, comme suggéré, j'espère que cela aide !
Tchin Tchin

@niklasvh @BrunoMarc @cyouden bonne nouvelle le build passe pour le PR
Désolé de ne pas avoir mis à jour plus tôt, j'étais en fait passé du déplacement de la bibliothèque, j'avais rencontré le bogue en l'utilisant dans un pic. J'espère que ça aide!

@simonpinn J'essaie d'utiliser la version html2canvas-1.0.0-alpha.10 pour mon code angulaire 4. Je reçois l'erreur suivante dans tous les navigateurs. Et seule une partie du HTML est imprimée.

34487ms html2canvas : html2canvas $npm_package_version
core.js:1427 ERREUR Erreur : Non capturé (en promesse) : non défini
à resolvePromise (zone.js:824)
à resolvePromise (zone.js:795)
à eval (zone.js:873)
à ZoneDelegate.invokeTask (zone.js:425)
à Object.onInvokeTask (core.js:4747)
à ZoneDelegate.invokeTask (zone.js:424)
à Zone.runTask (zone.js:192)
à drainMicroTaskQueue (zone.js:602)
à ZoneTask.invokeTask [en tant qu'invocation] (zone.js:503)
à invokeTask (zone.js:1540)
defaultErrorLogger @ core.js:1427
ErrorHandler.handleError @ core.js:1488
Logger.js:36 83270ms html2canvas : Arborescence de nœuds d'analyse terminée
Valeur non valide donnée pour la longueur : "auto"

@simonpinn J'utilise le chemin comme suit. Existe-t-il un problème avec la dernière version 1.0.0-alpha.10 dans le code tyscript (angular 4) ? Pouvez-vous s'il vous plaît m'aider avec la solution. Je suis très dans le besoin.

image

@bandacs ce problème est destiné à résoudre une erreur IE 11 pour les promesses non capturées, veuillez soulever un problème contre la version alpha.10, si vous rencontrez un problème.

Merci

@simonpinn @cyouden
Suivi du défaut ci-dessus. J'ai trouvé l'autre bibliothèque (dom-to-image) pour les navigateurs Chrome et Firefox. Mais le problème persiste dans IE. Lorsque je parcoure la conversation ci-dessus, j'ai appris que la solution de contournement de chaîne vide corrige le défaut. Est-ce que ce travail fonctionne? Puis-je également savoir quand ce changement sera inclus dans la bibliothèque ?

Correction fusionnée dans la v1.0.0-alpha.11

J'ai le projet reactjs et j'ai installé npm pour les mises à jour html2canvas. mais dans le navigateur IE 11, il m'affiche toujours une erreur de membre introuvable. S'il vous plaît aider. J'ai vérifié sur le système Windows 8

J'utilise la v1.0.0-alpha.11 et cela fonctionne très bien dans Chrome mais j'obtiens une erreur sur IE 11 sur les mêmes lignes
html2canvas(panel).then(canvas => {
var img = canvas.toDataURL("image/png");
});

Bonjour. Même erreur pour moi. Notre client utilise IE11 par défaut...

C'est corrigé !!
Ouvert node_modules/html2canvas/dist/html2canvas.js
Rechercher if (rule && rule.cssText)
et changez-le en if (rule && typeof rule.cssText === 'string')
Cela a résolu le problème pour moi dans IE11 :)

Salut tout le monde,
J'ai également le problème ci-dessous qui a été résolu :
Ouvrez node_modules/html2canvas/dist/html2canvas.js
Rechercher si (règle && règle.cssText)
et changez-le en if (rule && typeof rule.cssText === 'string')
Cela a résolu le problème pour moi dans IE11 :)

Comment puis-je obtenir une nouvelle version publiée à utiliser dans mon projet ? actuellement, j'ai testé en éditant des modules de nœuds dans mon environnement local. pour pousser la production besoin d'une nouvelle version publiée de la version 'html2canvas' ? pouvez-vous s'il vous plaît m'aider à l'obtenir?

Actuellement, j'utilise le "html2canvas": "^1.0.0-rc.1", qui n'a pas le correctif.

Salut @niklasvh , pouvez-vous me dire quand la nouvelle version sera publiée avec le correctif du problème #1374 . J'attends avec impatience de voir le correctif dans la version.

Cette page vous a été utile?
0 / 5 - 0 notes