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.
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.
@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.
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 :)