前端的有关IE兼容性的问题(图片的下载)
通过canvas画图,
然后生成图片,方式如下:
var myc = document.getElementById("myCanvas");
var ctx=myc.getContext("2d");
var image = new Image();
ctx.clearRect(0,0,800,800);//清空一波画布
ctx.drawImage(一些参数);//画一张图片
image.src = myc.toDataURL("image/png");//生成这张图片,并将格式设定为png
(生成这里貌似就出了问题,在火狐,谷歌之类的浏览器,进行了这一步之后是可以再图片上右击,然后进行图片的存储的,可是IE不行,IE的图片另存为那一栏是灰色的)
最后进行下载到本地,
var _fixType = function(type) {
type = type.toLowerCase().replace(/jpg/i, 'jpeg');
var r = type.match(/png|jpeg|bmp|gif/)[0];
return 'image/' + r;
};
然而这段代码就是在IE里面运行不了,火狐,谷歌之类都试过都可以正常运行,正常生成图片,并进行下载。
然后我在网上找了这么一段代码:
var imgURL = img.src;
var oPop = window.open(imgURL,"","width=1, height=1, top=5000, left=5000");
for(; oPop.document.readyState != "complete"; )
{
if (oPop.document.readyState == "complete")break;
}
oPop.document.execCommand("SaveAs");
oPop.close();
我发现当图片的路径地址URL确定的时候,就是说页面中的图片确实存在,且有真实路径的情况下是可以进行下载的(在IE下),但是在我用canvas画图画出来的图片再来进行存储的时候for(; oPop.document.readyState != "complete"; )这一行代码报错,报的错意思就是oPop不可为null之类的空值,原错是:无法获取未定义或 null 引用的属性“document”。
求各位大神帮忙看看吧,实在是没招儿了。