Javascript 使用HTML5画布捕获网页的一部分?

Javascript 使用HTML5画布捕获网页的一部分?,javascript,html,canvas,screenshot,Javascript,Html,Canvas,Screenshot,我知道您可以使用画布从HTML5视频流中捕获图像并将其显示在页面上。我感兴趣的是,您是否可以使用canvas对象在网页顶部创建一个覆盖,然后捕获该网页或其一部分的PNG快照 我想通过添加屏幕截图(在浏览器页面内)来增强我们的网站审查工具,然后将其提交到远程服务器 YouTrack是通过Java小程序实现的,但现代HTML5技术是否可以实现这一点 如有任何其他解决此问题的建议,也将不胜感激 谢谢这个问题问得很多。简单的回答是,出于安全原因,不能这样做 较长的答案包括提到只有FireFox才具有的d

我知道您可以使用画布从HTML5视频流中捕获图像并将其显示在页面上。我感兴趣的是,您是否可以使用canvas对象在网页顶部创建一个覆盖,然后捕获该网页或其一部分的PNG快照

我想通过添加屏幕截图(在浏览器页面内)来增强我们的网站审查工具,然后将其提交到远程服务器

YouTrack是通过Java小程序实现的,但现代HTML5技术是否可以实现这一点

如有任何其他解决此问题的建议,也将不胜感激


谢谢

这个问题问得很多。简单的回答是,出于安全原因,不能这样做

较长的答案包括提到只有FireFox才具有的
drawWindow
功能,它只在本地工作(同样,出于安全原因)。将来,一旦用户给予许可,它可能会工作,就像今天的Java小程序一样。将来,它甚至可能成为规范的一部分,而不是Mozilla一次性完成的事情


如果你觉得很疯狂,你可以尝试制作一个完整的HTML渲染器,获取页面的DOM树,并尝试在画布中渲染它。这是一个愚蠢的差事。

您可以通过读取DOM并使用javascript创建画布图像来“模拟”屏幕视图。查看底层的
html2canvas
脚本,了解如何使用纯Javascript(无需插件或服务器交互)完成此操作。

可以将HTML嵌入SVG图像并将SVG呈现到画布中。HTML可以包含哪些内容存在限制(例如,没有JavaScript和外部资源,因此图像必须在数据URL中编码)。记住这一点,它可能会完成你的工作


此技术已被记录并演示。

此脚本允许您直接在用户浏览器上拍摄网页或其部分的“屏幕截图”。屏幕截图基于DOM,因此可能不会100%精确到真实的表示,因为它不会生成实际的屏幕截图,而是基于页面上可用的信息构建屏幕截图


我非常确定,所有支持画布的浏览器都会进行屏幕外渲染,然后在绘制命令后将其合成到页面中,因此这是不可能的。对不起,可能是重复的,请查看。这是关于屏幕共享的,但是你可以简化它,只需要一页屏幕截图。