【问题标题】:Good JS lib to take screenshot of the screen好的 JS lib 来截取屏幕截图
【发布时间】:2011-02-19 12:06:36
【问题描述】:

我希望我的用户能够截取网页的屏幕截图(或者我定义屏幕截图的大小),然后允许他们将其保存到他们的计算机上。

有没有人知道一个好的 JS 库可以让你做到这一点?

我知道浏览器有插件,但我想要一些纯 JS 的东西,这样用户只需点击一个按钮,就会出现一个“另存为”链接,其中包含他们正在查看的内容的屏幕截图。

感谢您的帮助。

/fmsf

【问题讨论】:

标签: javascript image cross-browser screenshot


【解决方案1】:

浏览器不会向网页公开允许这样做的 API,因此无法使用在页面中运行的纯 JavaScript 来实现这一点。

实现这一点的唯一方法是在服务器上准备好屏幕抓取,以及指向适当下载链接的正常下载链接。

【讨论】:

  • 是的,我们已经这样做了,但是它给我们的服务器带来了很大的过载,使屏幕截图意味着渲染页面和加载对象系统。这就是为什么我想避免它并让它发生在客户端
  • 也许这曾经是不可能的,但现在已经不可能了。看看这个问题stackoverflow.com/questions/4912092/…
【解决方案2】:

这不能在 JavaScript 中完成。在当前文档/域之外进行屏幕截图是一个潜在的安全问题,并且是不可能的。有关更多背景信息,请参阅我关于 getting the pixel colour from the current mouse position 的问题。

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

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

【讨论】:

  • +1。 Mozilla 使用.drawWindow() 扩展了画布,但出于您在帖子中提到的安全原因,它仅适用于以完全权限运行的代码。不过,source code 暗示这些安全问题可能会在未来得到解决。
【解决方案3】:

HTML2Canvas (http://html2canvas.hertzen.com/) 将呈现的 HTML 重新创建到画布中。您可以将画布保存为图像。这可以解决问题,尽管它不是 100% 准确(并且有充分的理由 - 如果可能的话,这会在浏览器中打开安全漏洞,请参阅 https://stackoverflow.com/a/1936084/1333479)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2021-05-10
    • 2012-03-10
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多