"Signaler un bug" ou "Outil de rétroaction" de Google vous permet de sélectionner une zone de la fenêtre de votre navigateur pour créer une capture d'écran qui est soumise avec vos commentaires sur un bug.
Capture d'écran de Jason Small, publiée dans une question en double .
Comment font-ils cela? L'API de rétroaction JavaScript de Google est chargée à partir d' ici et leur présentation du module de rétroaction montrera la capacité de capture d'écran.
javascript
html
canvas
screenshot
joelvh
la source
la source
Réponses:
JavaScript peut lire le DOM et en rendre une représentation assez précise en utilisant
canvas
. J'ai travaillé sur un script qui convertit le HTML en une image de canevas. Décidé aujourd'hui d'en faire une implémentation en envoyant des commentaires comme vous l'avez décrit.Le script vous permet de créer des formulaires de commentaires qui incluent une capture d'écran, créée sur le navigateur du client, avec le formulaire. La capture d'écran est basée sur le DOM et, en tant que telle, peut ne pas être exacte à 100% par rapport à la représentation réelle car elle ne fait pas de capture d'écran réelle, mais crée la capture d'écran en fonction des informations disponibles sur la page.
Il ne nécessite aucun rendu du serveur , car l'image entière est créée sur le navigateur du client. Le script HTML2Canvas lui-même est encore dans un état très expérimental, car il n'analyse pas autant des attributs CSS3 que je le souhaiterais, ni n'a aucun support pour charger des images CORS même si un proxy était disponible.
Compatibilité du navigateur encore assez limitée (pas parce que plus ne pouvait pas être pris en charge, je n'ai tout simplement pas eu le temps de le rendre plus compatible avec tous les navigateurs).
Pour plus d'informations, consultez les exemples ici:
http://hertzen.com/experiments/jsfeedback/
modifier Le script html2canvas est maintenant disponible séparément ici et quelques exemples ici .
modifier 2 Une autre confirmation que Google utilise une méthode très similaire (en fait, sur la base de la documentation, la seule différence majeure est leur méthode asynchrone de traversée / dessin) peut être trouvée dans cette présentation par Elliott Sprehn de l'équipe Google Feedback: http: //www.elliottsprehn.com/preso/fluentconf/
la source
Votre application Web peut désormais prendre une capture d'écran «native» de l'ensemble du bureau du client en utilisant
getUserMedia()
:Jetez un œil à cet exemple:
https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/
Le client devra utiliser Chrome (pour l'instant) et devra activer la prise en charge de la capture d'écran sous les indicateurs chrome: //.
la source
Navigator.getUserMedia()
est obsolète, mais juste en dessous, il est écrit "... Veuillez utiliser le navigateur plus récent navigator.mediaDevices.getUserMedia () ", c'est-à-dire qu'il vient d'être remplacé par une API plus récente.Comme Niklas l'a mentionné, vous pouvez utiliser la bibliothèque html2canvas pour prendre une capture d'écran à l'aide de JS dans le navigateur. Je vais étendre sa réponse sur ce point en fournissant un exemple de capture d'écran à l'aide de cette bibliothèque:
Afficher l'extrait de code
En
report()
fonctiononrendered
après avoir obtenu l'image sous forme d'URI de données, vous pouvez la montrer à l'utilisateur et lui permettre de dessiner une "région de bogue" avec la souris, puis envoyer une capture d'écran et les coordonnées de la région au serveur.Dans cet exemple, une
async/await
version a été créée: avec unemakeScreenshot()
fonction agréable .MISE À JOUR
Exemple simple qui vous permet de prendre une capture d'écran, de sélectionner une région, de décrire un bug et d'envoyer une requête POST ( ici jsfiddle ) (la fonction principale est
report()
).Afficher l'extrait de code
la source
Obtenez une capture d'écran au format Canvas ou Jpeg Blob / ArrayBuffer à l'aide de l' API getDisplayMedia :
DÉMO:
la source
Voici un exemple en utilisant: getDisplayMedia
Les documents de l' API de capture d'écran méritent également d'être vérifiés .
la source