如何强制在 iPhone 上的新选项卡中打开文件下载?



在我的 Angular 应用程序中,我尝试在移动设备中单击时在新选项卡中打开图像、pdf 和其他各种下载链接。这在桌面上按预期工作,但移动设备一直在当前窗口中打开下载,并强制用户使用浏览器后退按钮。

<span class="link" (click)="viewFile(document.docID)">{{document.comments}}/span>

viewFile(documentName: string){
this.spinner.show();
this.formService.viewFile(documentName).subscribe((data: any) => {
this.spinner.hide();
const link = document.createElement('a');
link.href = window.URL.createObjectURL(data);
link.target = '_blank';
link.click();
}, (error) => {
this.spinner.hide();
this.toastr.error(error);
});
}
I have also tried window.open(link.href, '_blank') with no success

如何修改我的 viewFile 功能以强制在移动设备的新选项卡中打开下载?

我正在通过https提供我的应用程序和下载内容。混合内容不是问题。

为什么不简单地使用 anchor 并明确指示浏览器打开一个新页面?

<span> 
<a [href]="getFileLink(document.docID)" target="_blank">
{{document.comments}}
</a>
</span>

事实证明,这是本机弹出窗口阻止程序触发的结果,因为用户操作与新窗口打开的距离太远。为了解决这个问题,我在单击时创建窗口对象,然后在回调返回后重新分配它。

viewFile(docID: string, isLocalDoc) {
const newWindow = window.open(this.formService.setLoadingUrl());
// timeout put in place b/c it returns too quickly for the new window without it (results in the window closing early)
setTimeout(() => {
this.spinner.show();
this.formService.viewFile(docID, isLocalDoc).subscribe((data: any) => {
this.spinner.hide();
setTimeout(() => {
newWindow.location.href = window.URL.createObjectURL(data);
if (data.type === 'application/octet-stream') {
newWindow.close();
}
}, 500);
}, (error) => {
this.spinner.hide();
newWindow.close();
this.toastr.error(error);
});
}, 500);
}

相关内容

  • 没有找到相关文章