在 window.open() 中使用 rel="noopener"

Using rel="noopener" in window.open()

所以我知道我可以在使用 target="_blank" 时在 a 标签中应用 rel="noopener。但我试图将它作为参数传递给 window.open(),即:

window.open('http://cats.com', '_blank', 'rel=noopener')

但是它似乎没有按我预期的方式工作,因为在用户单击 link 后 opener 对象仍然存在于 window 上。

有什么我想念的吗?或者不能按照我想要的方式完成吗?

我找到了一些很棒的文章,但据我所知,它们并没有完全解决我的用例。

https://developer.mozilla.org/en-US/docs/Web/API/Window/open https://mathiasbynens.github.io/rel-noopener/

非常感谢。

据我所知,这无法通过 window.open() 参数实现。但是,有一种方法可以实现该行为:

var newWindow = window.open();
newWindow.opener = null;
newWindow.location = 'http://some.url';

这对我有用:

const a = document.createElement("a")
a.href = args.url
a.target = "_blank"
a.rel = "noopener"
a.click()

doc中没有直接示例,但可以像这样使用并且对我有用。

window.open('http://cats.com', '_blank', 'noopener,resizable,scrollbars')

覆盖所有基地

最安全的重定向方式是添加 noopenernoreferrerwindow.opener = null

const openInNewTab = (url) => {
    const newWindow = window.open(url, '_blank', 'noopener,noreferrer')
    if (newWindow) newWindow.opener = null
}

然后调用你的新函数

openInNewTab('https://whosebug.com')

第三个参数也可以取these optional values,根据你的需要。