Html 为什么要使用rel=";诺佩纳·诺弗勒;是否始终在新选项卡中打开?
我们有一个网站有多个链接到一个web应用程序。预期的行为是,第一次单击任何链接都应在新选项卡中打开web应用程序,随后的任何单击都应在相同的新选项卡中打开web应用程序 我们这样做是因为我们的用户只希望同时打开web应用程序的一个实例 这与向链接添加Html 为什么要使用rel=";诺佩纳·诺弗勒;是否始终在新选项卡中打开?,html,hyperlink,href,Html,Hyperlink,Href,我们有一个网站有多个链接到一个web应用程序。预期的行为是,第一次单击任何链接都应在新选项卡中打开web应用程序,随后的任何单击都应在相同的新选项卡中打开web应用程序 我们这样做是因为我们的用户只希望同时打开web应用程序的一个实例 这与向链接添加target属性有关: <a https://example.com" target="webapp-tab">Link 1</a> <a https://example.com" target="webapp-tab"
target
属性有关:
<a https://example.com" target="webapp-tab">Link 1</a>
<a https://example.com" target="webapp-tab">Link 2</a>
问题是这会改变行为。现在,每次单击任何链接都将打开一个新选项卡
行为改变的具体原因是什么?据我所知,区别只在于不会随请求一起发送推荐人和开场白信息,但为什么它会在新选项卡中打开
即使链接中添加了rel=“noopener noreferrer”
,我还能做些什么来保持原来的行为吗
但是为什么它会在一个新的选项卡中打开呢
似乎是这样规定的,他说:
请注意,当使用noopener
时,在决定是否打开新窗口/选项卡时,除了\u top
、\u self
和\u parent
之外的非空目标名称都被视为\u blank
我的猜测是,如果应用程序本身指定了不同的选项卡名称,可能会担心某些不应该泄漏的信息可能会泄漏,例如,如果不同的脚本首先打开了一个具有该名称的选项卡,但没有noopener
,那么它可能会引用该选项卡,当用户打开一个明确设置了noopener
的链接时,仍然使用该引用访问内容
即使链接中添加了rel=“noopener noreferrer”,我还能做些什么来保持原来的行为吗
这可能会破坏此功能首先应该提供的安全性
您可以尝试在加载文档后让JS在文档上运行,并让它从这些链接中分别删除rel
属性。将noopener
零件从其值中删除
当然,您将无法获得此功能提供的任何“保护”,但在同一选项卡中打开所有链接仍应有效
编辑:对于设置了此特定
目标的所有链接,将属性值设置为空字符串的简单方法如下
document.querySelectorAll('[target="webapp-tab"]').forEach(function(e) { e.rel = ''; } )
(当然,请确保在加载文档后执行该操作。)谢谢,安全性不太重要,因为两个网站都由同一家公司运营。因此,我们需要找到一种删除rel属性的方法。从设置了target=“webapp tab”
的所有链接中删除rel
属性的简单方法是-如果您测试,在JS选项卡中没有该行的情况下,一旦rel
属性设置为空,它将在单独的选项卡中打开两个链接,它们都是在同一个地方开的。(经过Chrome测试,我认为在其他浏览器中也应该如此。)
document.querySelectorAll('[target="webapp-tab"]').forEach(function(e) { e.rel = ''; } )