javascript - Bloburl 不在 IE 中工作,但在 chome 中工作正常
问题描述
var newPDF = window.open(this.generatedPDF.output('bloburl'), '_blank');
newPDF.print();
此代码在 Chrome 中运行完美,但在 IE 中使用此代码时出现警告
你想允许这个网站在你的电脑上打开一个应用程序吗?
点击 YES ,我得到了这个
您将需要一个新的应用程序来打开 BLOB
IE 的可能解决方案是什么?
解决方案
根据您的描述,我想您想在浏览器中显示 PDF 文件,然后打印。
据我所知,IE 11会阻止blob的显示,如果要显示它们,首先我们需要下载它,然后从本地查看。
所以,我建议你可以尝试参考下面的代码,在使用IE浏览器的时候先下载文件,然后打印,在使用其他浏览器的时候,你可以使用你的代码来打印它们:
// if Internet Explorer or Edge is used, download it.
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
var byteCharacters = atob(result.document);
var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
var blob = new Blob([byteArray], {
type: 'application/pdf'
});
window.navigator.msSaveOrOpenBlob(blob, "output.pdf");
// for all other web browsers
} else {
//your code to print them
}
参考:
推荐阅读
- javascript - 使用 React Js 发布用户输入的最佳方式
- javascript - React Dom 覆盖了整个页面
- google-apps-script - 具有数据验证(下拉)的单元格具有值“未定义”。为什么?
- php - 如何从使用来自不同命名空间的类的命令行执行 php 文件?
- c# - c# FTDI 24bit 二进制补码工具
- amazon-cloudfront - CloudFront 到公共或私有 Route53 托管区域
- optuna - 在 Optuna 培训中关闭警告
- google-apps-script - 获取外部 URL 并保存到云端硬盘
- c# - 如何使用 WiFi 加密狗在 WiFi MCU(ESP8266、ESP32)和 PC 之间发送、获取、交换数据?
- r - 如何使用来自另一个数据帧的多列对数据帧进行子集化