Google "Informar un error" o "Herramienta de comentarios" le permite seleccionar un área de la ventana de su navegador para crear una captura de pantalla que se envía con sus comentarios sobre un error.
Captura de pantalla de Jason Small, publicada en una pregunta duplicada .
¿Cómo estan haciendo esto? La API de comentarios de JavaScript de Google se carga desde aquí y su descripción general del módulo de comentarios demostrará la capacidad de captura de pantalla.
javascript
html
canvas
screenshot
joelvh
fuente
fuente
Respuestas:
JavaScript puede leer el DOM y representar una representación bastante precisa de eso usando
canvas
. He estado trabajando en un script que convierte HTML en una imagen de lienzo. Decidió hoy implementarlo para enviar comentarios como usted describió.El script le permite crear formularios de comentarios que incluyen una captura de pantalla, creada en el navegador del cliente, junto con el formulario. La captura de pantalla se basa en el DOM y, como tal, puede no ser 100% precisa para la representación real, ya que no hace una captura de pantalla real, pero construye la captura de pantalla en función de la información disponible en la página.
No requiere ninguna representación del servidor , ya que la imagen completa se crea en el navegador del cliente. El script HTML2Canvas en sí todavía se encuentra en un estado muy experimental, ya que no analiza casi todos los atributos CSS3 que quisiera, ni tiene soporte para cargar imágenes CORS incluso si hubiera un proxy disponible.
Todavía es bastante limitada la compatibilidad del navegador (no porque no se pueda soportar más, simplemente no he tenido tiempo de hacerlo más compatible con el navegador cruzado).
Para obtener más información, eche un vistazo a los ejemplos aquí:
http://hertzen.com/experiments/jsfeedback/
editar El script html2canvas ahora está disponible por separado aquí y algunos ejemplos aquí .
edit 2 Otra confirmación de que Google usa un método muy similar (de hecho, según la documentación, la única diferencia importante es su método asíncrono de desplazamiento / dibujo) se puede encontrar en esta presentación de Elliott Sprehn del equipo de comentarios de Google: http: //www.elliottsprehn.com/preso/fluentconf/
fuente
Su aplicación web ahora puede tomar una captura de pantalla 'nativa' de todo el escritorio del cliente usando
getUserMedia()
:Echa un vistazo a este ejemplo:
https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/
El cliente tendrá que usar Chrome (por ahora) y deberá habilitar el soporte de captura de pantalla en Chrome: // flags.
fuente
Navigator.getUserMedia()
está en desuso, pero justo debajo dice "... Utilice el navegador más reciente.mediaDevices.getUserMedia () ", es decir, se reemplazó por una API más nueva.Como Niklas mencionó , puede usar la biblioteca html2canvas para tomar una captura de pantalla usando JS en el navegador. Extenderé su respuesta en este punto proporcionando un ejemplo de tomar una captura de pantalla usando esta biblioteca:
Mostrar fragmento de código
En
report()
funciónonrendered
después de obtener la imagen como URI de datos, puede mostrárselo al usuario y permitirle que dibuje "región de error" con el mouse y luego envíe una captura de pantalla y coordenadas de región al servidor.En este ejemplo
async/await
se hizo la versión: con buenamakeScreenshot()
función .ACTUALIZAR
Ejemplo simple que le permite tomar una captura de pantalla, seleccionar una región, describir un error y enviar una solicitud POST ( aquí jsfiddle ) (la función principal es
report()
).Mostrar fragmento de código
fuente
Obtenga una captura de pantalla como Canvas o Jpeg Blob / ArrayBuffer utilizando la API getDisplayMedia :
MANIFESTACIÓN:
fuente
Aquí hay un ejemplo usando: getDisplayMedia
También vale la pena echarle un vistazo a los documentos de la API de captura de pantalla .
fuente