Javascript下载无法在Firefox和IE中运行

Owa*_*med 3 javascript html5 canvas todataurl

我正在下载图片.它仅适用于Chrome,不适用于Firefox或IE.

        var a = document.createElement('a');
        a.href = canvas.toDataURL("image/jpeg").replace("image/jpeg", "image/octet-stream");
        a.download = 'Post-ITIE.jpg';
        a.click()
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我,它如何适用于所有浏览器.

JsFiddle的例子

帮助将受到高度赞赏.谢谢

Jon*_*ops 8

var fileName = 'Post-ITIE.jpg';

if ('msToBlob' in canvas) { // IE10+
  var blob = canvas.msToBlob();
  navigator.msSaveBlob(blob, fileName);
} else {
  var a = document.createElement('a');
  a.setAttribute('href', canvas.toDataURL());
  a.setAttribute('target', '_blank');
  a.setAttribute('download', fileName);
  a.style.display = 'none';
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
}
Run Code Online (Sandbox Code Playgroud)

它与最初提供的代码有几点不同:

  • 它检查是否msToBlob存在该方法以支持在Internet Explorer中下载文件.
  • target=blank为link元素添加了一个.即使浏览器不支持该download属性,也可以确保显示图像.
  • 它添加了文档的链接,以便.click()实际在Firefox中工作并在之后删除它.