javascript - Chrome 在下载为 PDF 时阻止 Blob 对象

标签 javascript google-chrome pdf blob

我创建了一小段脚本,它调用 API 来获取 PDF 并将 responseType 作为 arraybuffer 发送。

使用它我创建了一个新的 Blob 并将类型设置为“application/pdf”

为了强制下载,我创建了一个 anchor 元素,将 blob 传递给它并单击它。

这在本地和我的测试服务器上的其他浏览器上运行良好,但在 Chrome 上我失败了——下载栏中没有文件。

PDF 绝对可用,因为我可以将 API 的 url 粘贴到选项卡中并查看它,并且原始 API 调用的响应会传递到 Blob。

示例代码

var fileName = 'dummyFilename-' + offerId + '.pdf';
var blob = new window.Blob([resData], { type: 'application/pdf' });

var anchorElement = document.createElement('a');
var url = window.URL.createObjectURL(blob);

document.body.appendChild(anchorElement);
anchorElement.id = 'anchorElement';
anchorElement.hidden = 'true';
anchorElement.href = url;

if (typeof anchorElement.download !== 'undefined') {
    anchorElement.download = fileName;
} else {
    anchorElement.target = '_blank';
}

anchorElement.click();

最佳答案

你们有像 uBlock Origin 这样的广告拦截器扩展吗?如果是这样,它可能会阻止弹出窗口/选项卡中的所有 blob URL。 Easylist 默认执行此操作:

https://github.com/easylist/easylist/commit/e3276b6ff9611e821d0e8ba7ac4dc336a4e3b765

在我的例子中,我为我的网站禁用了 uBlock Origin 并且它起作用了。

关于javascript - Chrome 在下载为 PDF 时阻止 Blob 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38743327/

相关文章:

javascript - 在( Bootstrap )模态主体内将数据 ID 传递给 ColdFusion 查询

javascript - 根据复选框 ID 值填充输入字段

html - 无论缩放多少,只有 Firefox 在中间显示 Logo 。 IE 和 Chrome 不读取顶部和底部边距。任何人都知道为什么?

javascript - 将凭据发送到登录网页

javascript - jquery 在 div 之间切换并随后隐藏事件的 div

javascript - 从 chrome 扩展弹出窗口访问网站 localStorage

javascript - 是什么导致网页重新加载?

python - WeasyPrint:修复了每个 pdf 页面上长表重叠的页脚标签

Python图像库无法转换为pdf

java - Apache FOP 验证异常 : Invalid property encountered on "fo:inline": font-variant-ligatures