欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS中使用cavas截圖網(wǎng)頁并解決跨域及模糊問題

 更新時間:2018年11月13日 11:54:05   作者:布布布布  
這篇文章主要介紹了JS中使用cavas截取網(wǎng)頁并解決跨域以及模糊問題 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下

前幾天給了個需求對瀏覽器網(wǎng)頁進(jìn)行截圖,把網(wǎng)頁統(tǒng)計數(shù)據(jù)圖形表等截圖保存至用戶本地。

首先對于網(wǎng)頁截圖,我用的是canvas實現(xiàn),獲取你需要截圖的模塊的div,從而使用canvas對你需要的模塊進(jìn)行截圖。

我們先來引入canvas的js文件,js文件獲取地址官網(wǎng)主頁:http://html2canvas.hertzen.com/

<script type="text/javascript" src="js/html2canvas.js"></script>
<script type="text/javascript" src="js/html2canvas.min.js"></script>

div按鈕代碼

<div><a id="down" href="" download=" rel="external nofollow" downImg">下載按鈕</a></div>
//href用來取到值 要寫個空 down load是下載圖片出來的名稱

jsp代碼

function test() {
     var canvas2 = document.createElement("canvas");           //創(chuàng)建一個新的canvas
  let _canvas = document.querySelector('#dijit__TemplatedMixin_0');      //這里面填寫 你需要截圖的div
  var w = parseInt(window.getComputedStyle(_canvas).width);  
  var h = parseInt(window.getComputedStyle(_canvas).height); 
  canvas2.width = w * 2;
  canvas2.height = h * 2;              //將canvas畫布放大2倍或者更多,然后盛放在較小的容器內(nèi),就顯得不模糊了
  canvas2.style.width = w + "px";
  canvas2.style.height = h + "px";       
  var context = canvas2.getContext("2d");
  context.scale(2, 2);       //指圖片偏移
  html2canvas(document.querySelector('#dijit__TemplatedMixin_0'), {    //寫需要截圖的div    
   taintTest : false,  
   useCORS : true,   
   allowTaint :false,   //這三串代碼解決跨域問題  
     canvas : canvas2
  }).then(
    function(canvas) {
     document.querySelector("#down").setAttribute('href',canvas.toDataURL());      //down設(shè)置為你的點擊鍵
    });
window.onload = test; 

截圖出來后,由于我的網(wǎng)址上有百度地圖的api,地圖圖片等等一些東西,用canvas網(wǎng)頁進(jìn)行截圖是就會發(fā)現(xiàn)所有圖片的地方都是空白。這就是因為跨域。

來講一下跨域問題,我舉個例子說明這個跨域,比如我的網(wǎng)頁里面有的圖片不是來自于自己的服務(wù)器。那么,這張圖片就和這個網(wǎng)頁不是同域,那么html2canvas就無法對這種圖片進(jìn)行截圖,如果你的網(wǎng)站的所有圖片都放在單獨的圖片服務(wù)器上,那么用html2canvas對整個網(wǎng)頁進(jìn)行截圖是就會發(fā)現(xiàn)所有圖片的地方都是空白。

跨域問題網(wǎng)上好多大佬說用代理服務(wù)器來解決,但是感覺太麻煩,后來我使用了小段代碼就OK了。

taintTest : false,  
useCORS : true,   
allowTaint :false, 
//注:useCORS:true和allowTaint:true 這兩個都是來解決跨域問題的,但是并不可以一起使用,如果同時使用會出現(xiàn)錯誤。

對于截圖模糊就調(diào)整canvas畫布大小比如我上面寫的*2,畫布調(diào)大,容器小,截圖自然就清楚了

截圖成功呈現(xiàn)

總結(jié)

以上所述是小編給大家介紹的JS中使用cavas截取網(wǎng)頁并解決跨區(qū)及模糊問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論