2017-10-18 151 views
0

我想知道是否有可能從基於JavaScript的Web應用程序中捕獲客戶端桌面的屏幕截圖。我想向用戶提供應用程序中的一個按鈕,用戶可以使用它們截取其桌面屏幕(而不是頁面或頁面中的元素,實際的OS桌面屏幕)的屏幕截圖。是否可以從Web應用程序中捕獲客戶端桌面的屏幕截圖?

主瀏覽器(Chrome和Firefox)是否允許這種操作?我意識到可能存在安全問題,但是我可以請求用戶允許進行此類訪問嗎?有沒有可以幫助我的庫,工具或文檔?或者這是不可行的?

我做了一些關於這個主題的研究,但只找到了在瀏覽器中截取內容的方法。

+1

的可能的複製[如何捕獲客戶端「桌面」使用的HTML/JavaScript的部分截圖?](https://stackoverflow.com/questions/34723564/how-to -apture-screenshot-of-the-client-desktop-using-html-javascript) – Nisarg

回答

0

您只能使用畫布捕捉圖像或視頻幀作爲屏幕截圖。但是,如果你想捕捉網頁上的特定元素試試這個庫: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>

+0

但是,我需要的是捕獲用戶桌面的屏幕截圖,而不是Web應用程序中的內容。 – artie

0

是的,它允許這樣做。我不知道這是不是一個好的開始,但你可以檢查一個開源的應用程序來完成這項工作。

這裏是鉻遠程控制應用程序源碼。你可以找到捕捉屏幕的代碼段。如果你完成了工作,我想聽到你的消息。

鉻遙控應用link

相關問題