在没有window.opener引用的情况下在新窗口中打开链接

时间:2017-08-07 14:55:20

标签: javascript html

我在Javascript中遇到了一些与窗口系统有关的问题:

我有一个网站A,列出了指向其他网站B的链接(目前<a>标签带有target="_blank"属性。)

我希望A中的链接在B的新标签页中打开,但B中的页面(我无法编辑)包含一个更改{{1}位置的脚本在这种情况下,包含网站A的选项卡会自行关闭。

所以我正在寻找一种方法来打开一个新的标签/窗口而不引用window.parent中的当前页面。有可能吗?

2 个答案:

答案 0 :(得分:1)

我找到了一种方法来移除对我网站的window.opener引用,所以如果有人遇到同样的问题,这是一个解决方案:

<a href="javascript:openLink('http://example.com')">Link</a>
var openLink = function(url) {
  var w = window.open(url, '_blank');
  w.opener = null;
}

答案 1 :(得分:0)

rel="noopener"属性添加到锚标记:

<a target="_blank" rel="noopener" href="http://example.com">Link</a>

大多数浏览器都支持此功能:https://caniuse.com/#search=noopener

注意:

  • IE和Edge不支持rel="noopener",但他们也没有为window.opener设置跨源链接(我无法找到这方面的权威参考资料) ,但是)。
  • 如果您需要支持设置window.opener并且不支持rel="noopener"的其他浏览器(即Safari 10或其他),@ Elassyo&#39;技术将起作用。