这让我非常沮丧 - 我正在使用jQuery将一些HTML写入页面。在该 HTML 中有一个基本链接:
<a href="http://someurl.com" target="_blank" class="external-link">Link Text</a>
问题是,由于某种原因,在某些移动设备(Google Pixel和某些iPhone(上,该链接将无法在新标签页(Chrome或Safari(中打开。所以我尝试使用 JavaScript 来做这件事,使用 .external-link 上的点击事件 - 同样的问题。它只是在这些有问题的设备上的同一浏览器窗口中打开(在我的设备上工作正常(。
我已经确认无论哪种方式(target="_blank"或JS(都可以在其他多种设备上使用,包括我的Android手机。在这些设备上,我无法在Chrome/Safari中看到任何会导致此行为的设置。
对这个问题有什么猜测吗?
在现代浏览器中,about:blank
作为目标应该可以解决问题.
在 2018 年或 2017 年底将其用作桌面/移动/WebView 应用程序的window.open
目标(可能_blank
当时在浏览器中没有按预期工作(.
欢迎澄清其工作的规范或浏览器源代码以及兼容性表链接。
编辑 01 Feb. 2021:主要浏览器和奇怪的边缘情况。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');
您可以尝试以下几种方法:
如果它不仅仅是帖子中的拼写错误,请确保您使用的是 target="_blank" 而不是 target="blank"。关键字需要下划线。
如果您要链接到一个不属于您的网站,则还应包含rel="noopener"。这本身可能无法解决这个问题,但这是一种很好的做法。