首先功能是要求前臺導出word,但是前後臺是分離的,圖片存在後臺,所以就存在跨域問題。 導出文字都是沒有問題的(jquery.wordexport.js),但是導出圖片就存在問題了: 圖片是以鏈接形式存到word中,這樣如果是需要vpn的網站就會存在生成的word在沒有vpn的情況下打不開,有vpn ...
首先功能是要求前臺導出word,但是前後臺是分離的,圖片存在後臺,所以就存在跨域問題。
導出文字都是沒有問題的(jquery.wordexport.js),但是導出圖片就存在問題了:
圖片是以鏈接形式存到word中,這樣如果是需要vpn的網站就會存在生成的word在沒有vpn的情況下打不開,有vpn的情況下必須啟用編輯才能載入出來圖片。
解決辦法:將圖片轉換成Data URL格式,再導出。
詳細代碼如下所示:
1 function changeImgToDataurl(){ 2 3 var charImg = document.all("exportdom").getElementsByTagName("img"); 4 var imgURLs = ""; 5 for (var i = 0; i < charImg.length; i++) { 6 var imgURL = charImg[i].currentSrc; 7 getBase64(imgURL,charImg[i]); 8 } 9 } 10 function getBase64(url,charImg){ 11 var Img = new Image(); 12 Img.crossOrigin = "Anonymous";//跨域必須使用,且後臺也得設置允許跨域 13 dataURL=''; 14 Img.src=url; 15 Img.onload=function(){ //要先確保圖片完整獲取到,這是個非同步事件 16 var canvas = document.createElement("canvas"), //創建canvas元素 17 width=Img.width, //確保canvas的尺寸和圖片一樣 18 height=Img.height; 19 canvas.width=width; 20 canvas.height=height; 21 canvas.getContext("2d").drawImage(Img,0,0,width,height); //將圖片繪製到canvas中 22 dataURL=canvas.toDataURL('image/jpg'); //轉換圖片為dataURL 23 condataurl?condataurl(dataURL,charImg):null; //調用回調函數 24 }; 25 } 26 27 function condataurl(dataURL,charImg){ 28 charImg.src=dataURL; 29 //console.log(charImg); 30 }