JS可以实现浏览器之外的截图功能吗?

问题:

其实前端截图可以用canvas提供的API实现,但是现在公司部门提需求要做一个浏览器之外也可以截图的功能,就是说他们想截取电脑桌面的一些内容,然后再保存在网页上提交。   

问下这个可以实现吗,要是不能的话,请问还有那些方法可以实现,并且可以和前端实现交互的。

阅读 7.8k
5 个回答

截图本身这个功能只能依赖像QQ和微信的截图工具,而无法用js完成。
所以能实现的功能仅仅只有在工具截图完后,通过js将截图粘贴到页面里,再上传到服务器。

之前项目的截图粘贴代码示例

$('textarea').on("paste", function (event) {
    // 监听粘贴事件
    var items = (event.clipboardData || event.originalEvent.clipboardData).items;
    console.log(items);
    for (index in items) {
      var item = items[index];
      var type = item.type;
      if (type && type.split('/')[0] == 'image') {
        var blob = item.getAsFile();
        var size = blob.size;
        if (size / (1024 * 1024) < 2) {
          var reader = new FileReader();
          reader.onload = function (e) {
            var base64Str = e.target.result;
            // console.log(base64Str);
            // 上传至服务器逻辑
            
          };
          reader.readAsDataURL(blob);
        } else {
          layer.msg("图片大小不能超过2M", {icon: 5});
        }
      }
    }
  })

如果JS可以实现浏览器之外的截图,我们还能放心的浏览网站吗?
访问个页面就上传一下你的桌面截图。。。
不知道你怕不怕,反正我是怕的

Phantomjs 你值得拥有

有一些古老的Java Applet可以实现,不过现在Flash都没人用了,java用的更少,大部分用户机器上应该都没有JRE

这个是无法实现的。js执行的环境是浏览器里。他不能调用操作系统的里面的api。实现不了截屏,但是可以实现截取当前网页的内容。
一些PC客户端应用能够截屏是因为他们运行在操作系统上,能够调用系统的api实现截屏。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题