Javascript 强制Ipad下载pdf并在新选项卡中打开
我有一个utils函数,我正在利用它在用户浏览器上创建下载。单击相关元素时,系统会提示用户下载文件,此时我们会进行后端调用以创建相关链接问题在于,ipad用户不会被提示下载该文件,而是在当前选项卡中打开该文件,这会破坏用户体验。以下代码用于模拟下载Javascript 强制Ipad下载pdf并在新选项卡中打开,javascript,vue.js,Javascript,Vue.js,我有一个utils函数,我正在利用它在用户浏览器上创建下载。单击相关元素时,系统会提示用户下载文件,此时我们会进行后端调用以创建相关链接问题在于,ipad用户不会被提示下载该文件,而是在当前选项卡中打开该文件,这会破坏用户体验。以下代码用于模拟下载 const showFile = (blob, fileName) => { // It is necessary to create a new blob object with mime-type explicitly set //
const showFile = (blob, fileName) => {
// It is necessary to create a new blob object with mime-type explicitly set
// otherwise only Chrome works like it should
var newBlob = new Blob([blob], { type: "application/pdf" });
// IE doesn't allow using a blob object directly as link href
// instead it is necessary to use msSaveOrOpenBlob
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(newBlob);
return;
}
// For other browsers:
// Create a link pointing to the ObjectURL containing the blob.
const data = window.URL.createObjectURL(newBlob);
var link = document.createElement("a");
link.href = data;
link.download = fileName;
link.click();
setTimeout(function() {
// For Firefox it is necessary to delay revoking the ObjectURL
window.URL.revokeObjectURL(data);
}, 100);
};
export const prepareFileName = fileName => fileName.replace(/\./g, " ");
export default showFile;
我试图以几种不同的方式添加target=“\u blank”
(例如link.setAttribute('target','u blank')
),但没有成功。显然,上面的代码在chrome和Edge上运行没有问题,但在ipad上,它的行为方式是不受欢迎的。我在测试时使用的是浏览器堆栈,结果好坏参半