是否可以从Web应用程序中捕获客户端桌面的屏幕截图?

时间:2017-10-18 11:36:31

标签: javascript google-chrome firefox browser web-applications

我想知道是否可以从基于JavaScript的Web应用程序中捕获客户端桌面的屏幕截图。我想向用户提供一个应用程序中的按钮,他们可以使用这个按钮来截取他们的桌面屏幕截图(不是页面,或页面中的元素,实际的OS桌面屏幕)。

主浏览器(Chrome和Firefox)是否允许此类操作?我知道可能存在安全问题,但是我可以请求用户允许这种访问吗?是否有任何可以帮助我的库,工具或文档?或者这是不可行的?

我对这个主题进行了一些研究,但只找到了在浏览器中截取内容截图的方法。

3 个答案:

答案 0 :(得分:2)

看起来这个会帮助你:How to capture screenshot of parts of the client "desktop" using HTML/JavaScript ?

使用WebRTC和Screen Capturing,您可以使用桌面屏幕截图(Firefox和Chrome都支持它)。 Javascript库RTCMultiConnection对于使用WebRTC非常有用,但也可以在不使用其他库的情况下使用。

答案 1 :(得分:0)

您只能使用Canvas捕获图像或视频帧作为屏幕截图。但是,如果您想捕获网页上的特定元素,请尝试使用此库:html2canvas

以下是代码:

注意:在drawImage()函数

中仔细调整尺寸



$(".drag").draggable();
$(".drag").droppable();
var takeScreenShot = function() {
    html2canvas(document.getElementById("container"), {
        onrendered: function (canvas) {
            var tempcanvas=document.createElement('canvas');
            tempcanvas.width=350;
            tempcanvas.height=350;
            var context=tempcanvas.getContext('2d');
            context.drawImage(canvas,112,0,288,200,0,0,350,350);
            var link=document.createElement("a");
            link.href=tempcanvas.toDataURL('image/jpg');   //function blocks CORS
            link.download = 'screenshot.jpg';
            link.click();
        }
    });
}

#container{
    width:400px;
    height:200px;
}
#rightcontainer{
    width:300px;
    height:200px;
    background:gray;
    color:#fff;
    margin-left:110px;
    padding:10px;
}
#leftmenu{
    color:#fff;
    background-color:green;
    width:100px;
    height:200px;
    position:fixed;
    left:0;
    padding:10px;
}

button{
    display:block;
    height:20px;
    margin-top:10px;
    margin-bottom:10px;
}
.drag{
  width:40px;
  height:20px;
  background-color:blue;
  z-index:100000;
  margin-top:10px;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>
  
  
<button onclick="takeScreenShot()">Snapshot</button>
<div id="container">
    <div id="leftmenu">
      Left Side
      <div class="drag">
      </div>
      <div class="drag">
      </div>
      <div class="drag">
      </div>
      Drag----------->
            &
      Click Snapshot
    </div>
    <div id="rightcontainer">
        Right Side
    </div>
</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

是的,它允许这样做。我不知道这是一个好的开始方式,但你可以检查一个开源应用程序来完成这项工作。

这是chrome遥控应用程序源。你可以找到捕获屏幕的代码片段。如果你完成了工作,我想听听你的意见。

Chromium遥控应用link