使用JS

时间:2016-05-20 18:50:42

标签: javascript safari mobile-safari

我正在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>

无法工作,无论如何我都需要以编程方式打开此选项卡,我尝试了上述功能无济于事。此问题使我们的应用程序无法在Apple智能手机和平板电脑上打开文件。更糟糕的是,Safari甚至没有通知用户该弹出窗口&#39;被阻止了,所以我们的用户很简单地认为这个功能已被破坏,而实际上它在其他浏览器中运行。

如何在Safari中的新标签页中打开任何链接/文件?

1 个答案:

答案 0 :(得分:0)

这可能有所帮助。

window.open(url, '_blank'); not working on iMac/Safari

(我会将此作为评论分享,但还没有足够的代表。)