target =“_ blank”与target =“_ new”

时间:2011-02-10 23:54:24

标签: html

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

12 个答案:

答案 0 :(得分:627)

使用“_blank”

根据HTML5 Spec

  

有效浏览上下文名称是任何字符串,其中至少有一个字符不以U + 005F LOW LINE字符开头。 (以下划线开头的名称是为特殊关键字保留的。)

     

有效的浏览上下文名称或关键字是任何字符串,它是有效的浏览上下文名称,或者是对以下之一的ASCII不区分大小写的匹配:_ blank,_self,_parent或_top。 “ - Source

这意味着HTML5和not in HTML4 (and consequently XHTML) either中没有_new这样的关键字。这意味着,如果您将此作为目标属性的值使用,则不会出现任何一致的行为。

安全建议

正如Daniel和Michael在评论中指出的那样,当使用指向不受信任网站的目标_blank时,您应该另外设置rel="noopener"。这可以防止开放网站通过JavaScript搞乱开场白。有关详细信息,请参阅this post

答案 1 :(得分:125)

使用target="_blank"会指示浏览器在用户点击链接时创建新的浏览器标签或窗口。

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

  • 它将搜索具有上下文名称“_new”
  • 的选项卡或窗口
  • 如果找到“_new”标签/窗口,则会将URL加载到其中
  • 如果找不到,则会创建一个新的标签/窗口,其上下文名称为“_new”,并且加载了该网址

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

为此添加一些混淆,在HTML4中,target属性已被弃用。在HTML5中,这个决定被颠倒了,它再次成为规范的官方部分。无论您使用的是哪种版本的HTML,所有浏览器都支持target,但如果您的doctype是HTML4,则某些验证程序会将使用标记为已弃用。

答案 2 :(得分:25)

TL; DR
USE _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

SINCE&#34; _new&#34;并不是这些中的任何一个都会在#34; framename&#34;因此,如果用户重新点击该超链接,则不会打开新标签,而是更新现有标签。而在_blank中,如果用户点击两次,则会打开2个新标签页。

答案 3 :(得分:17)

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

使用recommendedperformance benefits):

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

答案 4 :(得分:13)

之前可能会问过这个问题,但是:

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

如果您使用target =“_ blank”,则每次都会在当前窗口的顶部创建一个全新的窗口。“

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

答案 5 :(得分:12)

我的理解是target = whatever将查找具有该名称的框架/窗口。如果找不到,它将打开一个具有该名称的新窗口。如果whatever == "_new",它将显示为使用_blank,除了.....

使用其中一个保留的目标名称将绕过“查找”阶段。因此,十几个链接上的target = "_blank"会打开十几个空白窗口,但十几个链接上的target = whatever只会打开一个窗口。十几个链接上的target = "_new"可能会产生不稳定的行为。我没有在几个浏览器上试过它,但只应该打开一个窗口。

至少这是我解释规则的方式。

答案 6 :(得分:10)

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

答案 7 :(得分:8)

注意 - 请记住始终包含&#34;引号&#34; - 至少在Chrome上,target=_blank(没有引号)与target="_blank"(带引号)不一样。

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

答案 8 :(得分:5)

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

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

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

_blank =有针对性的浏览上下文:新的:标签或窗口,具体取决于您的浏览设置

_new =无效; HTML5中没有元素

目标属性的值

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

答案 11 :(得分:-1)

在处理Iframed的页面时,使用_New非常有用。由于target =“_ blank”不起作用并在同一iframe上打开页面... target new是iframe Pages的最佳解决方案。只是我的五美分。