2010-05-14 89 views
1

我希望我的用户能够截图的网页(或我定义的截图大小),然后让他们把它保存到他们的计算机。良好的JS库采取屏幕截图

有谁知道一个好的JS库,允许你这样做吗?

我知道浏览器中有插件,但我想要一些纯JS,这样用户只需点击一个按钮和一个“另存为”链接,就可以看到他们正在查看的屏幕截图。

感谢您的帮助。

/fmsf

+2

不可能,没有跨浏览器的解决方案来创建截图与纯JavaScript(假设有一个纯JavaScript解决方案的任何浏览器)。 – Wolph 2010-05-14 11:56:07

回答

4

浏览器不公开的API,允许这样的网页,所以没有办法做到这一点使用普通的JavaScript在网页上运行。

实现此目的的唯一方法是在服务器上准备好屏幕抓图,并指向正确的下载链接。

+0

是的,我们已经这样做了,但是它给我们的服务器带来了很大的负担,使截屏意味着渲染页面并加载对象系统。这就是为什么我想避免它,并使其发生在客户端 – fmsf 2010-05-14 13:01:45

+0

也许这曾经是不可能的,但它不再是了。看看这个问题http://stackoverflow.com/questions/4912092/using-html5-canvas-javascript-to-take-screenshots – 2013-01-04 22:41:36

3

这不能在JavaScript中完成。在当前文档/域之外拍摄屏幕截图是一个潜在的安全问题,是不可能的。查看我的关于getting the pixel colour from the current mouse position的问题了解更多背景。

如果您需要将屏幕截图传输到服务器上,请查看与您的网站交互的外部应用程序。例如,开源bug跟踪器Mantis有一个适用于Windows的屏幕截图应用程序。

如果屏幕截图和文件保存都在客户端计算机上进行,请检查Firefox的Fireshot。它似乎没有提供任何交互功能与预定义的网站,但可能是您的用户的正确工具。

+2

+1。 Mozilla已经使用['.drawWindow()'](https://developer.mozilla.org/en/Drawing_Graphics_with_Canvas#section_9)扩展了画布,但它仅适用于以完全权限运行的代码,这是出于您在帖子中提到的安全原因。然而,[源代码](http://mxr.mozilla.org/mozilla/source/content/canvas/src/nsCanvasRenderingContext2D.cpp#2352)暗示这些安全问题可能会在未来得到解决。 – 2010-05-14 12:10:07

+0

干杯@安迪,很棒的信息! – 2010-05-14 12:12:14