无需使用 ActiveX 即可截取网站屏幕截图的 JavaScript 代码

IT技术 javascript screenshot
2021-03-05 19:40:31

我有一个用户与之交互的 JavaScript 应用程序。我需要保存当前时间的界面外观,裁剪出我需要的部分(或者通过指定div只拍摄我需要的部分),并发送回服务器。

显然,任何外部服务都无法做到这一点,我需要一个可以保存屏幕外观的 JavaScript(或Flash)脚本。这可能吗?

另外,正如下面的评论所说,我不能使用 ActiveX。

4个回答

Google 正在 Google+ 中这样做,一位才华横溢的开发人员对其进行了逆向工程并生成了http://html2canvas.hertzen.com/要在 IE 中工作,您需要一个画布支持库,例如http://excanvas.sourceforge.net/

我认为使用 JavaScript,由于安全限制,您将无法使用。flash,可能。

Flash 可以在 Flash Player 中获取位图快照,但不能获取 HTML 内容。
2021-04-22 19:40:31

在纯 JavaScript 中,不使用 ActiveX 是不可能的。

+1 用于解释他需要什么。一个活动的 x 控件可以做到这一点,javascript 会与之交互。
2021-04-29 19:40:31
这是可能的。转到 YouTube 视频。单击屏幕底部的“报告错误”。画布似乎是诀窍。
2021-05-04 19:40:31
似乎他们正在使用: JPEG 编码器移植到 JavaScript 并由 Andreas Ritter 优化,www.bytestrom.eu,11/2009 基本 GUI 阻塞 jpeg 编码器等。
2021-05-10 19:40:31
您可能是对的 - 在您单击报告错误链接时,它生成的其中一个 iframe 包含一份 HTML 副本。似乎 HTML 然后在服务器端呈现为图像,它们覆盖在您提交错误时突出显示的区域。
2021-05-15 19:40:31
你好。我得到了相同的问题链接关于您的评论:为什么您认为 YouTube 呈现报告错误服务器端?那么他们为什么要在代码中实现 JPG 编码器呢?
2021-05-16 19:40:31

使用 JavaScript(或 Flash)是不可能的。这取决于您的限制条件,并且有一些解决方法。

  1. 您可以利用浏览器扩展(例如 Firefox 附加组件),但我想它不符合您的要求。
  2. 我能想到的最佳选择是在客户端构建DOM树,然后将其发布到远程服务器。

在服务器端,没有什么能真正阻止你做任何事情。使用WebKit甚至启动 Internet Explorer 或 Firefox,您都可以创建快照服务器端。这远非优雅,但可能。