"Relatar um bug" ou "Ferramenta de feedback" do Google permite selecionar uma área da janela do navegador para criar uma captura de tela que é enviada com seus comentários sobre um bug.
Captura de tela de Jason Small, postada em uma pergunta duplicada .
Como eles estão fazendo isso? A API de feedback JavaScript do Google é carregada a partir daqui e sua visão geral do módulo de feedback demonstrará o recurso de captura de tela.
javascript
html
canvas
screenshot
joelvh
fonte
fonte
Respostas:
O JavaScript pode ler o DOM e renderizar uma representação bastante precisa desse uso
canvas
. Eu tenho trabalhado em um script que converte HTML em uma imagem de tela. Decidiu hoje fazer uma implementação para enviar feedbacks como você descreveu.O script permite criar formulários de feedback que incluem uma captura de tela, criada no navegador do cliente, junto com o formulário. A captura de tela é baseada no DOM e, como tal, pode não ser 100% precisa da representação real, pois não faz uma captura de tela real, mas cria a captura de tela com base nas informações disponíveis na página.
Não requer nenhuma renderização do servidor , pois toda a imagem é criada no navegador do cliente. O script HTML2Canvas em si ainda está em um estado muito experimental, pois não analisa quase os atributos CSS3 que eu gostaria que ele tivesse, nem tem suporte para carregar imagens CORS, mesmo que um proxy estivesse disponível.
Compatibilidade de navegador ainda bastante limitada (não porque mais não possa ser suportado, apenas não teve tempo para torná-lo mais compatível com vários navegadores).
Para mais informações, dê uma olhada nos exemplos aqui:
http://hertzen.com/experiments/jsfeedback/
editar O script html2canvas agora está disponível separadamente aqui e em alguns exemplos aqui .
editar 2 Outra confirmação de que o Google usa um método muito semelhante (de fato, com base na documentação, a única grande diferença é o método assíncrono de deslocamento / desenho) pode ser encontrada nesta apresentação por Elliott Sprehn, da equipe do Google Feedback: http: //www.elliottsprehn.com/preso/fluentconf/
fonte
Seu aplicativo da Web agora pode fazer uma captura de tela 'nativa' de toda a área de trabalho do cliente usando
getUserMedia()
:Veja este exemplo:
https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/
O cliente precisará usar o chrome (por enquanto) e precisará ativar o suporte à captura de tela sob os sinalizadores chrome: //.
fonte
Navigator.getUserMedia()
está obsoleto, mas logo abaixo diz "... Por favor, use o mais recente navigator.mediaDevices.getUserMedia () ", ou seja, ele foi substituído por uma API mais recente.Como Niklas mencionou, você pode usar a biblioteca html2canvas para fazer uma captura de tela usando JS no navegador. Vou estender sua resposta neste ponto, fornecendo um exemplo de captura de tela usando esta biblioteca:
Mostrar snippet de código
Em
report()
funçãoonrendered
depois de receber imagem como dados URI você pode mostrá-lo para o usuário e permitir-lhe para chamar a "região bug" com o mouse e, em seguida, enviar um screenshot e região coordenadas para o servidor.Em este exemplo
async/await
versão foi feita: com boamakeScreenshot()
função .ATUALIZAR
Exemplo simples que permite tirar capturas de tela, selecionar região, descrever erros e enviar solicitação POST ( aqui jsfiddle ) (a função principal é
report()
).Mostrar snippet de código
fonte
Obtenha a captura de tela como Canvas ou Jpeg Blob / ArrayBuffer usando a API getDisplayMedia :
DEMO:
fonte
Aqui está um exemplo usando: getDisplayMedia
Também vale a pena conferir os documentos da API do Screen Capture .
fonte