Blob下载可在Chrome中使用,但不能在Firefox中使用

时间:2018-08-09 06:20:36

标签: javascript google-chrome firefox

我正在使用以下代码段下载ArrayBuffer形式的blob

                       let blob = new window.Blob(dataOrg);
                       let anchor = document.createElement('a');
                       anchor.href = URL.createObjectURL(blob);
                       anchor.download = "downloadssss";
                       anchor.textContent = 'XXXXXXX';

                       if (anchor.click) {
                           anchor.click();
                       } else {
                           var evt = document.createEvent('MouseEvents');
                           evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                           evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                           anchor.dispatchEvent(evt);
                       }  

此代码在chrome中有效,但在Firefox中不起作用。我要下载的内容是通过PeerJs发送的mp4文件。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码吗?

let blob = new window.Blob(dataOrg);
                       let anchor = document.createElement('a');
                       anchor.href = URL.createObjectURL(blob);
                       anchor.download = "downloadssss";
                       anchor.textContent = 'XXXXXXX';
                       document.body.appendChild(anchor);  // This is required
                       if (anchor.click) {
                           anchor.click();
                       } else {
                           var evt = document.createEvent('MouseEvents');
                           evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                           evt.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                           anchor.dispatchEvent(evt);
                       } 

您需要在文档主体上附加锚标记才能在Firefox中工作。进行此更改之后,如果您在index.html响应中使用内容安全策略标头,则可能会遇到内容安全策略问题。