target =“ _ blank”在某些移动设备上不起作用

时间:2018-09-25 19:00:16

标签: javascript html mobile

这真的使我感到沮丧-我正在使用jQuery向页面写一些HTML。该HTML中有一个基本链接:

<a href="http://someurl.com" target="_blank" class="external-link">Link Text</a>

问题是由于某些原因,在某些移动设备(Google Pixel和某些iPhone)上,链接不会在新标签(Chrome或Safari)中打开。因此,我尝试在JavaScript上使用.external-link上的click事件-相同的问题。它只是在这些有问题的设备上的同一浏览器窗口中打开(在我的设备上工作正常)。

我已经确认(target =“ _ blank”或JS)可以在其他多种设备(包括我的Android手机)上正常工作。在这些设备上无法正常工作的Chrome / Safari中,我看不到任何设置会导致此问题。

有人怀疑这个问题吗?

2 个答案:

答案 0 :(得分:1)

在现代浏览器中,about:blank 作为目标应该可以解决问题。
在 2018 年或 2017 年底将其用作 window.open 的目标,用于桌面/移动/WebView 应用程序(可能 _blank 当时在浏览器中没有按预期工作)。
欢迎提供有关规范或浏览器源代码的说明以及兼容性表链接。

编辑 2021 年 2 月 1 日:主要浏览器和奇怪的边缘情况。 window.open 在某些设备上完全挂起 Firefox。

// common mobile browsers
var link    =   document.createElement('a');
link.setAttribute('rel', 'noopener noreferrer');
link.setAttribute('target', 'about:blank');
link.setAttribute('href', query);
link.click();
// other custom browsers
// noopener,noreferrer - https://stackoverflow.com/a/46958731/6357894
window.open(query, 'about:blank', 'noopener');

答案 1 :(得分:0)

您可以尝试以下几种方法:

如果这不仅是帖子中的错字,请确保您使用的是target =“ _ blank”而不是target =“ blank”。关键字必须带下划线。

如果要链接到您不拥有的网站,则还应包含rel =“ noopener”。可能无法单独解决此问题,但这是一个好习惯