Como tirar uma captura de canvas de uma página da web?

Quero adicionar um botão a um dos nossos sites que permitirá ao usuário registrar um bug no nosso sistema de rastreamento de bugs.

Uma das solicitações de resources é que um limite de canvas da página em questão seja enviado.

Sem instalar algo na máquina dos usuários finais, como posso fazer isso? O javascript tem algum tipo de API de captura de canvas?

Você pode pegar o innerHTML da página e processá-lo no servidor:

 document.getElementsByTagName('html')[0].innerHTML; // this would also be interactive (ie if you've // modified the DOM, that would be included) 

Não, o javascript não tem nada disso.

Temo que isso seja bem difícil. Eu não posso pensar em nada que faria isso sem instalar no computador do usuário.

Eu gostaria de ser provado errado, mas pelo menos isso é uma resposta para você.

Obtenha o máximo de informações possível sobre o ambiente do usuário usando jQuery. Valores de input (jQuery.support) / user agent / cookies / form, o url (para obter parâmetros e saber qual página teve um erro)

Envie a fonte da página como mencionada por Moff. Tente serializar o DOM como é agora para comparar o que é diferente da página original.

Também é útil enviar a fonte da página se você precisar mantê-la para fins históricos, já que quando você atualiza a página, ela se torna diferente.

Eu sugeriria algum tipo de integração com o FireShot, que é um addon grátis do Firefox / IE.

Eu concordo com as outras respostas – sem dados.

No entanto, existe um plugin do Firefox, o Pearl Crescent Page Saver , que pode valer a pena procurar por tarefas relacionadas.

Dê uma olhada no pagecrop (implementado com o plug-in jQuery + jCrop)

Eu devo estar perdendo alguma coisa, mas você não pode simplesmente …

Pressione PrtScr no teclado e cole no email.

Veja esta questão . Basicamente, não, não com javascript. Talvez com o ActiveX, mas isso está de volta para instalar coisas no PC do cliente.

Considere escrever um script do lado do servidor que repita exatamente a solicitação do usuário (supondo que não esteja após um POST) e armazenando o arquivo html resultante.

Você pode olhar para o uso de uma solução baseada na web, como o oferecido no Super Screenshot! ou WebShotsPro.com . Dependendo de suas necessidades, como capturas de canvas de áreas específicas de páginas ou páginas inacessíveis do mundo externo, pode não funcionar para você, mas é uma ideia.

Você também pode dar uma olhada em como o Evernote faz sua captura de canvas e talvez você possa vincular a isso ou criar sua própria extensão chrome. https://chrome.google.com/webstore/detail/evernote-web-clipper/pioclpoplcdbaefihamjohnefbikjilc?hl=pt