Html 为什么要使用rel=";诺佩纳·诺弗勒;是否始终在新选项卡中打开?

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"

我们有一个网站有多个链接到一个web应用程序。预期的行为是,第一次单击任何链接都应在新选项卡中打开web应用程序,随后的任何单击都应在相同的新选项卡中打开web应用程序

我们这样做是因为我们的用户只希望同时打开web应用程序的一个实例

这与向链接添加
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 = ''; } )