h5 頁面長按保存頁面截圖


//首先下載 html2canvas 插件 npm install html2canvas 
//進到頁面去后台拿二維碼圖片
把整個頁面通過html2canvas 插件轉為base64編碼放到img標簽中然后定位在 長按保存圖片的按鈕上 設置css opacity:0
過程中會遇到 canvas 畫布污染 因為后台返回的圖片一般都會跨域 插件第二個參數設置為{useCORS:true}
然后需要運維同學幫忙設置下CORS資源共享 
或者自己動手使用插件把后台返回的二維碼圖片再次通過 插件轉為base64編碼在放到img標簽在保存頁面
插件第一個參數為頁面的節點 第二個參數為允許跨域 返回的就是canvas元素
html2canvas(document.getElementById('view'),{useCORS:true}).then(function(canvas) {})
getCode() {
$http.post('', {
'url': '',
}).then(res => {
      this.setState({
         QrCode: res.QrCode,
      },()=>{
this.base64Img(res.QrCode)
});
    });
}

//需要注意ios不支持 image.onload image.src賦值放在image.onload之后

base64Img(src) {
let that = this;
let image = new Image();
let base64 = '';
image.crossOrigin = "*"; // 支持跨域圖片
image.onload = function(){
that.setState({
QrCode: that.getBase64Image(image)
},()=>{
that.takeScreenshot();
});
};
image.src = src + '&v=' + Math.random(); // 處理緩存
}

getBase64Image(img) {
let canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
let ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
let dataURL = canvas.toDataURL("image/png");
return dataURL;
}
takeScreenshot() {
html2canvas(document.getElementById('view'),{useCORS:true}).then(function(canvas) {
let imgData = canvas.toDataURL("png");
let z = document.createElement('img');
z.src = canvas.toDataURL("image/png");
z.class = 'footerSave';
document.getElementById('save').appendChild(z);
});
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM