使用Javascript在浏览器中进行屏幕截图?

3

我想这是一个奇怪的问题,答案很可能是不可能的,因为这将代表一种安全漏洞;但我正在寻找一种方法 - 如果有的话 - 来获取浏览器内部内容的截图。我不需要整个窗口,实际上只需要转储一个标记的渲染状态。它需要跨平台和跨浏览器兼容。


你能否提供更多关于你正在尝试做什么的细节?例如,标签是什么?你需要什么类型的状态信息以及你打算如何使用它?根据你简短的解释,我认为不需要截屏。 - Gene
我想转储 Silverlight 对象的内容 - 我指的是实际呈现的输出。 - EinarI
使用Silverlight API不可能做到吗?例如,Flash可以做到。我认为从JS中做这件事情不可能,所以在SL内部完成可能是唯一的选择。 - fenomas
真的吗?这可以用Flash完成...嗯...这让我想到了,实例化Flash并让它为我完成所有肮脏的工作。在SL中还没有找到这样做的方法。感谢您的指引! - EinarI
这个问题在StackOverflow上被问了很多次。这是其中最古老但也是最好的线程之一:<strong>https://dev59.com/cXVD5IYBdhLWcg3wL4cA</strong>。 - Simon East
2个回答

1

在纯JavaScript中(目前)无法实现此操作。

另外,如果你的目标是进行渲染测试,可以尝试在托管环境中实例化目标浏览器(比如在WinForms应用程序中托管Internet Explorer并获取呈现内容的屏幕截图)——这将显示Silverlight插件并允许进行屏幕截图。


截至2011/2012年已不再正确。虽然浏览器无法在没有插件/扩展的情况下启动屏幕截图,但现在有些浏览器确实支持粘贴二进制图像数据。 - Simon East
这与如何截取 Silverlight 插件的屏幕截图有什么关系? - Alex Gyoshev
1
现在已经可以查看页面,按下打印屏幕按钮,然后粘贴到浏览器窗口中,让网站的 javascript 处理图像(这在几年前是不可能的)。但是你仍然无法使用 JavaScript 自动执行整个“打印屏幕”过程。我想这就是我所说的。 - Simon East

0
如果您不需要实际的屏幕截图,可以获取内容的innerHTML,并通过Ajax将其发送回服务器,将其存储在某个地方并远程查看。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接