本篇文章為大家展示了怎么在JavaScript中使用cavas截圖網(wǎng)頁,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供長嶺網(wǎng)站建設(shè)、長嶺做網(wǎng)站、長嶺網(wǎng)站設(shè)計、長嶺網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、長嶺企業(yè)網(wǎng)站模板建站服務(wù),十多年長嶺做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
引入canvas的js文件,js文件獲取地址官網(wǎng)主頁:
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è)置為你的點(diǎn)擊鍵 }); window.onload = test;
截圖出來后,由于我的網(wǎng)址上有百度地圖的api,地圖圖片等等一些東西,用canvas網(wǎng)頁進(jìn)行截圖是就會發(fā)現(xiàn)所有圖片的地方都是空白。這就是因為跨域。
來講一下跨域問題,我舉個例子說明這個跨域,比如我的網(wǎng)頁里面有的圖片不是來自于自己的服務(wù)器。那么,這張圖片就和這個網(wǎng)頁不是同域,那么html2canvas就無法對這種圖片進(jìn)行截圖,如果你的網(wǎng)站的所有圖片都放在單獨(dú)的圖片服務(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)錯誤。
上述內(nèi)容就是怎么在JavaScript中使用cavas截圖網(wǎng)頁,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。