【发布时间】:2022-01-17 22:03:05
【问题描述】:
我正在一个 Ember.js 平台上开发,该平台带有一个用于上传文件的 Microsoft Azure 数据库。由于这些文件的内容很敏感,我们依靠 Azure 的安全访问 API 允许我们的用户查看文件大约 2 分钟,然后使访问链接失效。此安全访问链接以response.fileURL 的形式返回到我的应用程序。
问题是我需要在新选项卡中打开此链接,并且我尝试过的方法目前适用于除 Safari 之外的所有浏览器。
现在,在搜索“以编程方式在 safari 上打开新选项卡”一段时间后,到目前为止我在网上找到的每个结果(例如,http://whoknew.dk/programmatically-opening-a-new-tab-window-on-mobile-safari-55.htm)都有一个对以下代码有一些解释的实现:
function openURL(){
var a = window.document.createElement("a");
a.target = '_blank';
a.href = response.fileURL;
// Dispatch fake click
var e = window.document.createEvent("MouseEvents");
// e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null);
a.dispatchEvent(e);
}
openURL();
因为简单
<a target="_blank" href='link.com'>link</a>
不起作用,无论如何我都需要以编程方式打开此选项卡,我已尝试上述功能无济于事。这个问题使我们的应用程序无法在苹果智能手机和平板电脑上打开文件。更糟糕的是,Safari 甚至没有通知用户“弹出窗口”被阻止,所以我们的用户简单地认为这个功能被破坏了,而实际上它在其他浏览器中也能正常工作。
如何在 safari 的新标签页中打开任何链接/文件?
【问题讨论】:
标签: javascript safari mobile-safari