在 Safari iPhone 上的新标签页中打开链接

Posted

技术标签:

【中文标题】在 Safari iPhone 上的新标签页中打开链接【英文标题】:Opening of links in new tab on Safari iPhone 【发布时间】:2016-08-10 16:18:43 【问题描述】:

我有一个网站可以帮助人们为他们的 Instagram 帖子创建标题并评估主题标签。其中一项功能非常简单,只需将主题标签链接到 Instagram 即可查看它们包含哪些类型的图像。因为我不希望他们刚刚输入和评估的输入消失,所以我使用 target="_blank" 在新选项卡中打开了链接 - 这在桌面上完美运行,但在 iPhone 上,当您尝试点击标签链接。我怀疑通过禁用 target="_blank" 链接可能是某种保护,但我不确定。一切都只是简单的 html 链接。我尝试添加 rel="noreferrer" 但这没有任何区别。

因此,如果您对它为什么不起作用的原因有一个解释会有所帮助,但更有用的是关于如何在移动设备上获得我想要的东西的解决方案,简单地说:打开一个在新选项卡中链接,这样我就不会丢失刚刚呈现给用户的页面的输入/状态。

也非常感谢上述问题的替代解决方案。

【问题讨论】:

【参考方案1】:

试试这个js代码:

function openTab(url) 
    // Create link in memory
    var a = window.document.createElement("a");
    a.target = '_blank';
    a.href = url;

    // 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);
    a.dispatchEvent(e);
;

openTab('http://www.google.com');

你可以在这里找到原帖:http://whoknew.dk/programmatically-opening-a-new-tab-window-on-mobile-safari-55.htm

【讨论】:

有趣我会试一试。但奇怪的是,链接说你可以只使用对我不起作用的目标 _blank。然而,这是一篇旧文章,所以这可能已经改变了。【参考方案2】:

dispatchEvent 已弃用,您可以使用:

function openTab(url) 
  // Create link in memory
  var a = window.document.createElement("a");
  a.target = '_blank';
  a.href = url;

  //click
  a.click();
;

【讨论】:

如果没有用户交互来打开新选项卡并且用户在其 ios 设备上阻止了弹出窗口,则不会与目标 _blank 一起使用。

以上是关于在 Safari iPhone 上的新标签页中打开链接的主要内容,如果未能解决你的问题,请参考以下文章

在新标签页中打开链接在 Safari iOS 上不起作用

[带有IE8的新标签页中的javascript打开页面

无法使用 SignalR 在 safari ipad/iphone 上的同一 Web 应用程序中同时打开 2 个选项卡

让iPhone自带的Safari浏览器拥有强大的功能

在新标签页中打开网页 Selenium + Python

如何让新标签页打开新标签页中的网页。