首先功能是要求前台导出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 }