使用 HTML5/Canvas/JavaScript 拍摄浏览器内屏幕截图

Google 的“报告错误”或“反馈工具”可让您选择浏览器窗口的某个区域来创建屏幕截图,该屏幕截图将随您对错误的反馈一起提交。

Google Feedback Tool Screenshot截图由Jason Small提供,发布在重复的问题中。

他们是怎么做到的?Google的JavaScript反馈API是从这里加载的,他们对反馈模块的概述将演示屏幕截图功能。


答案 1

JavaScript 可以读取 DOM,并使用 呈现相当准确的表示形式。我一直在研究一个将HTML转换为画布图像的脚本。今天决定将其实现为发送反馈,就像您描述的那样。canvas

该脚本允许您创建反馈表单,其中包括在客户端浏览器上创建的屏幕截图以及表单。屏幕截图基于DOM,因此可能无法100%准确地反映实际表示,因为它不会制作实际的屏幕截图,而是根据页面上可用的信息构建屏幕截图。

不需要来自服务器的任何渲染,因为整个图像是在客户端的浏览器上创建的。HTML2Canvas脚本本身仍处于非常实验的状态,因为它没有解析我想要的CSS3属性,也没有任何支持加载CORS图像,即使代理可用。

浏览器兼容性仍然相当有限(不是因为不支持更多,只是没有时间让它更支持跨浏览器)。

有关更多信息,请查看此处的示例:

http://hertzen.com/experiments/jsfeedback/

编辑html2canvas脚本现在在这里单独提供,在这里有一些例子

编辑 2另一个确认Google使用非常相似的方法(实际上,基于文档,唯一的主要区别是它们的遍历/绘制的异步方法)可以在Google反馈团队的Elliott Sprehn的演示文稿中找到:http://www.elliottsprehn.com/preso/fluentconf/


答案 2

您的 Web 应用现在可以使用以下命令截取客户端整个桌面的“本机”屏幕截图:getUserMedia()

看看这个例子:

https://www.webrtc-experiment.com/Pluginfree-Screen-Sharing/

客户端必须使用chrome(目前),并且需要在 chrome://flags 下启用屏幕捕获支持。