有什么区别?如果我只想在新标签页/窗口中打开链接,应该使用哪个?" /> 有什么区别?如果我只想在新标签页/窗口中打开链接,应该使用哪个?"> 有什么区别?如果我只想在新标签页/窗口中打开链接,应该使用哪个?" />
ChatGPT解决这个技术问题 Extra ChatGPT

target="_blank" 与 target="_new"

<a target="_new"><a target="_blank"> 有什么区别?如果我只想在新标签页/窗口中打开链接,应该使用哪个?

当前回答者摘要:_new 没有任何特殊含义。您也可以写 _white_little_lamb
@x3ro 说“_new”没有任何特殊含义是怎么回事?
@ÁlvaroG.Vicario 我指的是“你可以写......而不是”。但是考虑到这一点,我认为“没有特殊含义”与“明确不鼓励”不同,但这可能是我吹毛求疵 ;)
我想提醒大家,使用没有 rel="noopener"target="_blank" 是一个潜在的安全漏洞。搜索 rel="noopener" 以了解更多信息。

C
Community

使用“_blank”

根据HTML5 Spec

有效的浏览上下文名称是具有至少一个不以 U+005F LOW LINE 字符开头的字符的任何字符串。 (以下划线开头的名称保留用于特殊关键字。)有效的浏览上下文名称或关键字是任何字符串,它要么是有效的浏览上下文名称,要么是与以下之一不区分大小写的 ASCII 匹配:_blank、_self、_parent、或 _top。”——来源

这意味着在 HTML5 中没有 _newnot in HTML4 (and consequently XHTML) either 这样的关键字。这意味着,如果您将其用作目标属性的值,则无论如何都不会出现一致的行为。

安全建议

正如 Daniel 和 Michael 在评论中指出的那样,当使用 target _blank 指向不受信任的网站时,您还应该设置 rel="noopener"。这可以防止打开站点通过 JavaScript 与打开器混淆。有关详细信息,请参阅 this post


省略规范中的粗体文本会使该引用听起来令人困惑。我将其读作“valid browsing context name 或关键字是任何字符串,它要么是 valid browsing context name 要么......”
@lyoshenka,@x3ro:我冒昧地将前一段添加到引用中。那应该可以消除混乱。
@aesede:阅读规范。它们无效,因为“my_custom_name”可能没有下划线前缀。因此“new”可以,但“_new”不是!
安全方面,这是一个重要的阅读mathiasbynens.github.io/rel-noopener
请考虑添加由于 target="_blank" 中的 javascript attack vulnerability,人们还应该添加 rel="noopener noreferrer"
A
Abhi Beckert

使用 target="_blank" 将指示浏览器在用户单击链接时创建新的浏览器选项卡或窗口。

根据规范,使用 target="_new" 在技术上是无效的,但据我所知,每个浏览器的行为方式都相同:

它将搜索上下文名称为“_new”的选项卡或窗口

如果找到“_new”选项卡/窗口,则将 URL 加载到其中

如果未找到,则使用上下文名称“_new”创建一个新选项卡/窗口,并将 URL 加载到其中

注意 target="_new" 的行为与 target="new" 完全相同,后者是有效的 HTML,而前者是无效的 HTML。

对此增加了一些混乱,在 HTML4 中,target 属性已被弃用。在 HTML5 中,这一决定被推翻,它再次成为规范的官方部分。无论您使用什么版本的 HTML,所有浏览器都支持 target,但如果您的文档类型是 HTML4,一些验证器会将其标记为已弃用。


所以,基本上,如果我有两个(或更多)带有 target="_new" 的链接,它们都会在同一个选项卡中打开,一个会覆盖另一个?
@art-solopov 据我所知,是的,每个浏览器都会发生这种情况。但是“_new”对于目标来说是一个非法值,所以不要这样做。
a
abe312

TL;DR 使用 _blank

target 属性指定打开链接文档的位置。

USAGE: target="xyz"  [don't forget double quotes]

_blank  Opens the linked document in a new window or tab
_self   Opens the linked document in the same frame as it was clicked (this is default)
_parent     Opens the linked document in the parent frame
_top    Opens the linked document in the full body of the window 
framename   Opens the linked document in a named frame

因为“_new”不是其中的任何一个,它会出现在“framename”下,因此如果用户重新单击该超链接,它将不会打开新选项卡,而是更新现有选项卡。而在 _blank 中,如果用户单击两次,则会打开 2 个新选项卡。


M
MSeifert

我知道这是一个老问题,正确答案,使用 _blank,已多次提及,但使用 <a target="somesite.com" target="_blank">Link</a> 存在安全风险

使用 recommended (performance benefits):

<a href="somesite.com" target="_blank" rel="noopener noreferrer">Link</a>

只是一些关于安全风险方面的额外阅读:jitbit.com/alexblog/…
c
corroded

这可能以前被问过,但是:

“每个指定 target="_new" 的链接都会按名称查找并找到该窗口,并在其中打开。

如果你使用 target="_blank," 每次都会在当前窗口之上创建一个全新的窗口。

从这里:http://thedesignspace.net/MT2archives/000316.html


2
2 revs, 2 users 67%

target="_blank" 在大多数浏览器中打开一个新标签。


N
Nakilon

据我了解,target = whatever 将寻找具有该名称的框架/窗口。如果找不到,它将打开一个具有该名称的新窗口。如果是 whatever == "_new",它看起来就像您使用 _blank 一样,除了.....

使用保留的目标名称之一将绕过“查找”阶段。因此,十几个链接上的 target = "_blank" 会打开十几个空白窗口,但十几个链接上的 target = whatever 只会打开一个窗口。 target = "_new" 在十几个链接上可能会出现反复无常的行为。我没有在几种浏览器上尝试过,但应该只打开一个窗口。

至少我是这样解释规则的。


A
Alex Grin

注意 - 请记住始终包含“引号” - 至少在 Chrome 上,target=_blank(无引号)与 target="_blank"(带引号)不同。

后者在新选项卡/窗口中打开每个链接。前者(缺少引号)打开您在一个新选项卡/窗口中单击的第一个链接,然后用您单击的每个后续链接(也以缺少引号命名)覆盖相同的选项卡/窗口。


很好的一点。当我没有将 _blank 括在引号中时,我遇到了这个问题。我从新创建的“空白”选项卡中单击的链接是在该选项卡中写入内容而不是打开新选项卡。将 _blank 括在引号中会强制 chrome 每次打开一个新选项卡。
另外,请确保使用“_blank”而不是“_BLANK”。 Chrome实际上对大小写很挑剔,不会多次使用“_BLANK”打开新标签。
J
James Drinkard

_blank 作为目标值每次都会产生一个新窗口,

_new 只会产生一个新窗口。

此外,使用 _new 目标值单击的每个链接都将替换在先前生成的窗口中加载的页面。

您可以点击此处When to use _blank or _new亲自试用。


您能按描述列出哪些浏览器支持 _new 吗?
@qarma 这种行为在我所知道的所有浏览器中都有描述,_new 不是一个神奇的关键字,它只是一个名称,如果存在具有该名称的窗口,它将重用它,否则它将打开它.单击该窗口的多个链接只会在命名窗口中打开不同的页面,而不是打开多个新页面。
该规范实际上向浏览器建议它们ignore以下划线开头但不是关键字的目标。当浏览器“忽略”无效的目标名称时,没有建议应该做什么。可能性包括:(1)将其视为“_blank”(2)将其视为窗口名称(好像没有非法下划线)(3)将其视为明确为空的窗口名称(4)将其视为那里没有目标属性。 -- 任何浏览器都可以选择任何解释。
j
j0k

链接的目标属性强制浏览器在新的浏览器窗口中打开目标页面。使用 _blank 作为目标值每次都会产生一个新窗口,而使用 _new 只会产生一个新窗口,并且以 _new 目标值单击的每个链接都将替换在先前产生的窗口中加载的页面


A
Alex Grin

要在新标签/窗口中打开链接,您将使用 <a target="_blank">

_blank = 目标浏览上下文:新的:选项卡或窗口,具体取决于您的浏览设置

_new = 无效; HTML5 中没有针对元素的目标属性的此类值

目标属性及其元素上的所有值:video demo


O
Ozzy Gonzalez

在处理 Iframed 页面时,使用 _New 很有用。由于 target="_blank" 没有做到这一点并在同一个 iframe 上打开页面...... target new 是 iframe 页面的最佳解决方案。只是我的五分钱。