canvas教程

前端的有关IE兼容性的问题(图片的下载)

字号+ 作者:H5之家 来源:H5之家 2017-05-08 13:00 我要评论( )

通过canvas画图, 然后生成图片,方式如下: var myc = document.getElementById(myCanvas); var ctx=myc.getContext(2d); var image = new Image(); ctx.clearR

前端的有关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;
};

// 加工image data,替换mime type imgData = imgData.replace(_fixType(type),'image/octet-stream'); /** * 在本地进行文件保存 * @param {String} data 要保存到本地的图片数据 * @param {String} filename 文件名 */ var saveFile = function(data, filename){ var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a'); save_link.href = data; save_link.download = filename; var event = document.createEvent('MouseEvents'); event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); save_link.dispatchEvent(event); }; // 下载后的问题名 var filename = 'baidufe_' + (new Date()).getTime() + '.' + type; // download saveFile(imgData,filename);

然而这段代码就是在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”。
求各位大神帮忙看看吧,实在是没招儿了。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • canvas画图代码实例

    canvas画图代码实例

    2017-04-11 12:06

  • Canvas画图基础 Beta空间

    Canvas画图基础 Beta空间

    2017-04-09 08:00

  • Canvas画图-鼠标移动图形

    Canvas画图-鼠标移动图形

    2017-04-04 09:08

  • Android canvas画图操作之切割画布实现方法(clipRect)

    Android canvas画图操作之切割画布实现方法(clipRect)

    2017-03-11 08:04

网友点评