Html2canvas: Problema no IE 11, Erro: Não capturado (em promessa): Erro: Membro não encontrado.

Criado em 8 jan. 2018  ·  36Comentários  ·  Fonte: niklasvh/html2canvas

Erro obtido: "html2canvas $ npm_package_version. Erro: Não capturado (em promessa): Erro: Membro não encontrado."
Quando tento obter uma tela.

Código:
html2canvas (document.querySelector ("# capture")). then (function (canvas) {
console.log (tela);
document.getElementById ('here-appear-theimages'). appendChild (canvas);
});
Usando:
Versão Angular: 4.0.1
SO: Janela 10
Também foi adicionada a referência de: https://cdn.jsdelivr.net/npm/es6-promise/dist/es6-promise.auto.js
Captura de tela do erro anexada.

error_ie_11

Needs More Information

Comentários muito úteis

Corrigido !!
Abra node_modules/html2canvas/dist/html2canvas.js
Pesquise if (rule && rule.cssText)
e mude para if (rule && typeof rule.cssText === 'string')
Isso resolveu o problema para mim no IE11 :)

Todos 36 comentários

Eu adicionei um link para a seguinte biblioteca de promessas e pareceu corrigir o IE 11 para nós.
https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js

Sem código para reproduzir o erro, não posso ajudar.

Olá @niklasvh ,

Este é um exemplo de demonstração que hospedei no GitHub, você pode ver - GitHub Html2Canvas Demo

O código completo também é carregado no github, se você quiser ver: Pacote de código

Como executar o projeto:
1) Descompacte o pacote
2) Execute o comando: "npm install" do diretório para instalar a dependência
3) Para executar o comando do projeto: "npm start"

Olá @ jelkins8 ,

Eu tentei essa solução, mas não está funcionando para mim.
Este é um exemplo de demonstração que hospedei no GitHub, você pode ver - GitHub Html2Canvas Demo

Obrigado

Olá @niklasvh ,
Eu também tentei com es6-promessa e bluebird sem sucesso no IE11, posso confirmar que GitHub Html2Canvas Demo também falha no IE para mim.
Eu recebo html2canvas: Error: Member not found. seguido por Possible Unhandled Promise Rejection: Error: Member not found.
obrigado!

atualizado, depois de usar o bluebird polyfill meu rastreamento de pilha é:

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)

Estou enfrentando o mesmo problema para html2canvas: membro não encontrado para o IE.
Para o cromo está funcionando perfeitamente bem.
Por favor, atualize se houver alguma solução. Obrigado

Eu reproduzi o problema e localizei a causa, ele acontece na função createElementClone quando ela tenta acessar a propriedade cssText , por algum motivo ao usar font-awesome, um elemento com fa-spin lança este erro no IE ao acessar a propriedade.

Funciona da seguinte forma:

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

Observe o try ... catch.

Vou levantar um PR.

Parece causar uma regressão em Firefox 58.0.0 (Linux 0.0.0) /tests/reftests/background/radial-gradient2.html Should render untainted canvas FAILED @niklasvh alguma chance de você dar uma olhada?

obrigado

Olá @niklasvh ,
Você tem alguma solução para isso, alguém está olhando para esse problema?

Obrigado

Olá @ Prabhat2404 , a correção que propus em https://github.com/niklasvh/html2canvas/pull/1415 funciona muito bem para mim, mas falha em um dos testes de gradiente radial, que pedi a @niklasvh para dê uma olhada em. O problema ocorre para mim ao usar ícones incríveis de fontes, em particular fa-spin.

mesmo problema aqui

O problema ainda existe para o IE, caso tentemos imprimir o código html.
Existe alguma solução alternativa para não modificar o código-fonte da biblioteca e resolver o problema?

+1

+1

+1

Isso ajuda para mim!

@evgenyjam Essa solução ainda tem um bug, você precisa adicionar uma string vazia como o valor inicial para reduz.

Mencionei isso no PR, mas o autor ainda não atualizou. Mas com essa mudança funciona para mim.

@cyouden assim?
.reduce (("", css, regra) => {

@BrunoMarc Não, é o último argumento para reduzir, então:
.reduce ((css, regra) => {/ * código * /}, "")

(Por exemplo, veja o código que a mudança se propõe substituir naquele diff, ele usa corretamente o valor inicial para reduzir.)

@cyouden Obrigado pela resposta! Inseri este código em html2canvas.js mas o membro não encontrado ainda persiste, alguma ideia?
if (instância de nó de HTMLStyleElement && node.sheet && node.sheet.cssRules) {
const css = [] .slice
.call (node.sheet.cssRules, 0)
.reduce ((css, regra) => {
Experimente {
if (rule && rule.cssText) {
return css + rule.cssText;
}
return css;
} catch (errar) {
this.logger.log ('Não é possível acessar a propriedade cssText', regra.name);
return css;
}
}, '');
estilo const = node.cloneNode (false);
style.textContent = css;
estilo de retorno;
}

@BrunoMarc Não

Ei - desculpe o atraso para a festa, acabei de comprometer uma alteração com a string vazia padrão para a redução, conforme sugerido, espero que ajude!
Felicidades

@niklasvh @BrunoMarc @cyouden boa notícia da construção está passando para o PR
Desculpe por não ter atualizado antes, na verdade mudei de mover a biblioteca, encontrei o bug ao usá-lo em um pico. Espero que ajude!

@simonpinn Estou tentando usar a versão html2canvas-1.0.0-alpha.10 para meu código angular 4. Estou recebendo o seguinte erro em todos os navegadores. E apenas parte do html está sendo impresso.

34487ms html2canvas: html2canvas $ npm_package_version
core.js: 1427 ERROR Error: Uncaught (na promessa): undefined
em resolvePromise (zone.js: 824)
em resolvePromise (zone.js: 795)
em eval (zone.js: 873)
em ZoneDelegate.invokeTask (zone.js: 425)
em Object.onInvokeTask (core.js: 4747)
em ZoneDelegate.invokeTask (zone.js: 424)
em Zone.runTask (zone.js: 192)
em DraineMicroTaskQueue (zone.js: 602)
em ZoneTask.invokeTask [as invoke] (zone.js: 503)
em invokeTask (zone.js: 1540)
defaultErrorLogger @ core.js: 1427
ErrorHandler.handleError @ core.js: 1488
Logger.js: 36 83270ms html2canvas: análise da árvore de nós concluída
Valor inválido fornecido para Comprimento: "auto"

@simonpinn Estou usando o método a seguir. Há algum problema com a versão mais recente 1.0.0-alpha.10 no código tyscript (angular 4)? Você pode me ajudar com a solução. Estou muito necessitado.

image

@bandacs esse problema é para resolver um erro do IE 11 para promessas não captadas, por favor, levante um problema contra a compilação alpha.10, se você estiver tendo um problema.

obrigado

@simonpinn @cyouden
Acompanhando o defeito acima. Encontrei a outra biblioteca (dom-to-image) para os navegadores Chrome e Firefox. Mas o problema ainda continua no IE. Ao passar pela conversa acima, descobri que a solução alternativa de string vazia corrige o defeito. É uma solução alternativa para o trabalho? Também posso saber quando essa alteração será incluída na biblioteca?

Correção mesclada em v1.0.0-alpha.11

Eu tenho o projeto reactjs e fiz a instalação do npm para atualizações do html2canvas. mas no navegador IE 11 ainda me mostra o erro Membro não encontrado. Por favor ajude. Eu verifiquei no sistema Windows 8

Estou usando o v1.0.0-alpha.11 e funciona muito bem no Chrome, mas ocorre um erro no IE 11 nas mesmas linhas
html2canvas (painel). então (canvas => {
var img = canvas.toDataURL ("imagem / png");
});

Olá. Mesmo erro para mim. Nosso cliente usa o IE11 como padrão ...

Corrigido !!
Abra node_modules/html2canvas/dist/html2canvas.js
Pesquise if (rule && rule.cssText)
e mude para if (rule && typeof rule.cssText === 'string')
Isso resolveu o problema para mim no IE11 :)

Olá a todos,
Também estou tendo o seguinte problema que corrigiu:
Abra node_modules / html2canvas / dist / html2canvas.js
Pesquise se (regra && regra.cssText)
e altere-o para if (regra && typeof rule.cssText === 'string')
Isso resolveu o problema para mim no IE11 :)

Como posso obter uma nova versão publicada para usar em meu projeto? atualmente eu testei editando em módulos de nó em meu ambiente local. para impulsionar a produção precisa de uma nova versão publicada da versão 'html2canvas'? você pode me ajudar a pegá-lo?

Atualmente estou usando o "html2canvas": "^ 1.0.0-rc.1", que não tem a correção.

Olá @niklasvh , pode me dizer quando será lançada uma nova versão com a correção do problema # 1374. Esperando ansiosamente para ver a correção na versão.

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