javascript – 在IE中本地保存画布

嗨,我想在IE中本地保存画布.
var img = canvas.toDataURL("image/png").replace("image/png","image/octet-stream");

我无法通过以下方式下载它.

1) document.execCommand("SaveAs"..
2) window.location.href = img;
3) $.fileDownload(img);  // jquery download file library-
4) canvas2image // cross domain problem.

有没有办法在没有base64或跨域问题的IE中本地保存画布?非常感谢你.

解决方法

我知道这已经很晚了,但是在我的搜索中我偶然发现了这个问题同样的事情,我想分享一个我有用的解决方案.

假设您已有数据URI,则可以创建blob,然后使用msSaveBlobmsSaveOrOpenBlob

例:

dataURItoBlob = function(dataURI) {
        var binary = atob(dataURI.split(',')[1]);
        var array = [];
        for(var i = 0; i < binary.length; i++) {
            array.push(binary.charCodeAt(i));
        }
        return new Blob([new Uint8Array(array)],{type: 'image/png'});
    }

var blob = dataURItoBlob(uri);
window.navigator.msSaveOrOpenBlob(blob,"my-image.png");

我用这个answer作为我的大部分解决方案.

输入此内容后,我意识到这并不能真正帮助您解决跨域问题,所以这是最好的部分答案.有了这个,我只能考虑在可能的情况下使用数据URI,如果跨域是一个问题.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...