javascript - 使用 JS 以编程方式在 Safari 中打开一个新选项卡

标签 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>

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

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

最佳答案

这可能会有一些帮助。

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

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

关于javascript - 使用 JS 以编程方式在 Safari 中打开一个新选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37353908/

相关文章:

javascript - React 程序在 jscomplete.com/repl 上运行良好,但是当我在浏览器中运行时,相同的代码会出现以下错误

c# - 如何从 JavaScript 或 C# 中的日期/时间字符串中删除秒数?

html - 防止 HTML5 拖动幽灵图像飞回

css - Safari 将 td 移动到移动设备上的新行

html - Safari 在调整大小时不请求 srcset 图像

javascript - 为什么 'this' 的值从文档到窗口变化

javascript - Spidermonkey:实现 "this"?

html - “AE”字符在 Safari 中显示为一个字符

compass-sass - -webkit-linear-gradient 在 Safari 中导致 400 (Bad request) 错误

ios - 如何在 Safari iOS 的 html5 Canvas 中缩放表情符号?