Javascript Internet Explorer-传递给系统调用的数据区域太小-下载带有uri的png

Javascript Internet Explorer-传递给系统调用的数据区域太小-下载带有uri的png,javascript,internet-explorer,png,uri,Javascript,Internet Explorer,Png,Uri,我正在尝试使用uri下载png文件(下面的代码)。它适用于Chrome、Firefox和Safari,但(当然)不适用于Internet Explorer。我在Windows7上,所以我在Edge文档模式下使用IE11。错误是“传递给系统调用的数据区域太小。”我已读入 IE9和更高版本以及Edge都支持CSS和JS中的数据URI 文件,但不是HTML文件,最大大小为4GB 我的URI只有1410字节(使用URI.length)。你知道我为什么会得到这种大小的数据错误,以及如何修复它吗 下载功能:

我正在尝试使用uri下载png文件(下面的代码)。它适用于Chrome、Firefox和Safari,但(当然)不适用于Internet Explorer。我在Windows7上,所以我在Edge文档模式下使用IE11。错误是“传递给系统调用的数据区域太小。”我已读入

IE9和更高版本以及Edge都支持CSS和JS中的数据URI 文件,但不是HTML文件,最大大小为4GB

我的URI只有1410字节(使用URI.length)。你知道我为什么会得到这种大小的数据错误,以及如何修复它吗

下载功能:

function downloadURI(uri, name) {
    var link = document.createElement("a");
    link.download = name;
    link.href = uri;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    delete link;
}   
uri格式:

"data:image/png;base64,iVBORw0KGgo ETC..."

解决方案如下。我似乎找不到给予信任的链接,但这解决了它。我没有首先将画布转换为uri,而是传递画布,然后使用链接将其转换为uri并下载,或者(对于IE)将其转换为blob并使用canavas.msToBlob()和msSaveBlob()


删除链接
->:“任何用var声明的属性都不能从全局范围或函数范围中删除。”@Andreas-我尝试了=>
if(navigator.msSaveBlob){return navigator.msSaveBlob(new Blob([uri],{type:[image/png]),name);}
它下载得很好,但文件不能作为png读取。建议?没有,只是找到了链接,看起来很有希望:|尝试将
数据:text/html,Hello People
粘贴到地址栏中-它在Firefox和Chrome中有效,但在IE中无效。对于PNG图像,短而有效的数据URI,结果相同。IE似乎无法导航到数据URI。
function downloadURI(canvas, name) {
  if (navigator.msSaveBlob) { // IE10+
    var blob = canvas.msToBlob();
    return navigator.msSaveBlob(blob, name);
  } else {
    var uri = canvas.toDataURL("image/png")
    var link = document.createElement("a");
    link.download = name;
    link.href = uri;
    document.body.appendChild(link);
    if (link.click) {
      link.click();
    } else {
      var event = document.createEvent('MouseEvents');
      event.initMouseEvent('click', true, true, window);
      link.dispatchEvent(event);
    }
    document.body.removeChild(link);
  }
}