rel="noopener"
是一个 HTML 属性,用于超链接(<a>
标签)。
在这个例子中,当用户点击链接打开新页面时,新页面无法通过window.opener
来访问原始页面的window
对象。
还有一个类似的属性是rel="noreferrer"
。rel="noopener"
在现代浏览器中得到了很好的支持,它主要解决了window.opener
安全问题。而rel="noreferrer"
除了防止新页面访问原页面的window
对象外,还会隐藏引用来源信息。在一些场景下,如果只关注安全问题而不想影响引用来源信息的传递(例如用于分析等目的),rel="noopener"
是一个更好的选择。不过,对于一些较老的浏览器,rel="noopener"
可能没有得到完全支持,这时候可能需要考虑兼容性问题或者使用rel="noreferrer"
作为替代方案。
从性能角度来看,由于rel="noopener"
阻止了新页面与原页面之间潜在的不必要的交互(通过window.opener
),在一定程度上可以减少潜在的脚本执行和资源占用情况。特别是当新打开的页面包含恶意脚本试图利用window.opener
时,使用rel="noopener"
可以避免这种情况对原始页面性能的不良影响。