首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有“noopener”的Window.open打开一个新窗口而不是一个新选项卡

带有“noopener”的Window.open打开一个新窗口而不是一个新选项卡
EN

Stack Overflow用户
提问于 2018-03-14 11:26:20
回答 4查看 8.6K关注 0票数 16

我使用window.open('')'_blank'作为第二个参数,在新选项卡中打开eg的链接。window.open('http://google.com', '_blank')

但是,最近我添加了第三个参数'noopener',以便window.opener在新选项卡中变为空,并且新选项卡无法访问父选项卡/窗口。即window.openernull

window.open('http://google.com', '_blank', 'noopener')

所以上面的代码解决了安全问题,但是没有打开一个新的选项卡,而是开始打开一个新窗口,这与我所期望的不一样。我的浏览器设置是相同的,没有对其进行任何更改。

我能做些什么让这个代码打开新的选项卡而不是新窗口?我不想将noopener作为第三个参数移除

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-03-14 11:31:05

老实说,我认为您的代码很好,但是您可以尝试不同的实现:

代码语言:javascript
复制
var yourWindow = window.open();
yourWindow.opener = null;
yourWindow.location = "http://someurl.here";
yourWindow.target = "_blank";
票数 8
EN

Stack Overflow用户

发布于 2018-07-13 11:29:14

在一行中解决这一问题的另一种方法是直接访问opener属性,并将其设置为null,以利用window.open()返回Window对象的事实。这将在所有浏览器中工作,以打开一个带有空window.opener的新选项卡。

代码语言:javascript
复制
window.open(url, '_blank').opener = null;
票数 12
EN

Stack Overflow用户

发布于 2018-03-14 11:30:50

https://mathiasbynens.github.io/rel-noopener/

代码语言:javascript
复制
const anchor = document.createElement('a');

Object.assign(anchor, {
  target: '_blank',
  href: 'http://google.com',
  rel: 'noopener noreferrer'
})
.click()

这是一种感觉更干净的方法。它创建一个锚标记并单击它,我们必须使用这个解决方案作为用户首选项。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49276569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档