本篇文章為大家展示了怎么在JavaScript中使用cavas截圖網(wǎng)頁(yè),內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
瓊結(jié)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書(shū)合作)期待與您的合作!引入canvas的js文件,js文件獲取地址官網(wǎng)主頁(yè):
div按鈕代碼
//href用來(lái)取到值 要寫(xiě)個(gè)空 down load是下載圖片出來(lái)的名稱
jsp代碼
function test() { var canvas2 = document.createElement("canvas"); //創(chuàng)建一個(gè)新的canvas let _canvas = document.querySelector('#dijit__TemplatedMixin_0'); //這里面填寫(xiě) 你需要截圖的div var w = parseInt(window.getComputedStyle(_canvas).width); var h = parseInt(window.getComputedStyle(_canvas).height); canvas2.width = w * 2; canvas2.height = h * 2; //將canvas畫(huà)布放大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'), { //寫(xiě)需要截圖的div taintTest : false, useCORS : true, allowTaint :false, //這三串代碼解決跨域問(wèn)題 canvas : canvas2 }).then( function(canvas) { document.querySelector("#down").setAttribute('href',canvas.toDataURL()); //down設(shè)置為你的點(diǎn)擊鍵 }); window.onload = test;
截圖出來(lái)后,由于我的網(wǎng)址上有百度地圖的api,地圖圖片等等一些東西,用canvas網(wǎng)頁(yè)進(jìn)行截圖是就會(huì)發(fā)現(xiàn)所有圖片的地方都是空白。這就是因?yàn)榭缬颉?/p>
來(lái)講一下跨域問(wèn)題,我舉個(gè)例子說(shuō)明這個(gè)跨域,比如我的網(wǎng)頁(yè)里面有的圖片不是來(lái)自于自己的服務(wù)器。那么,這張圖片就和這個(gè)網(wǎng)頁(yè)不是同域,那么html2canvas就無(wú)法對(duì)這種圖片進(jìn)行截圖,如果你的網(wǎng)站的所有圖片都放在單獨(dú)的圖片服務(wù)器上,那么用html2canvas對(duì)整個(gè)網(wǎng)頁(yè)進(jìn)行截圖是就會(huì)發(fā)現(xiàn)所有圖片的地方都是空白。
跨域問(wèn)題網(wǎng)上好多大佬說(shuō)用代理服務(wù)器來(lái)解決,但是感覺(jué)太麻煩,后來(lái)我使用了小段代碼就OK了。
taintTest : false, useCORS : true, allowTaint :false, //注:useCORS:true和allowTaint:true 這兩個(gè)都是來(lái)解決跨域問(wèn)題的,但是并不可以一起使用,如果同時(shí)使用會(huì)出現(xiàn)錯(cuò)誤。
上述內(nèi)容就是怎么在JavaScript中使用cavas截圖網(wǎng)頁(yè),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。