target ="_ blank"与target ="_ new"

Ale*_*rin 504 html

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

fre*_*oma 640

使用"_blank"

根据HTML5规范:

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

一个有效的浏览上下文名称或关键字是一个有效的浏览上下文名称或者是一个一个ASCII不区分大小写的匹配任何字符串:_blank,_self,_parent,_top或" - 来源

这意味着_newHTML5中没有这样的关键字,也没有HTML4(以及XHTML).这意味着,如果将此值用作目标属性的值,则不会出现任何一致的行为.

安全建议

正如丹尼尔和迈克尔在评论中指出的那样,当使用_blank指向不受信任的网站的目标时,你应该另外设置rel="noopener".这可以防止开放网站通过JavaScript搞乱开场白.有关更多信息,请参阅此帖子.

  • 从规范中删除粗体文本使得引用听起来令人困惑的圆形.我将其读作"有效的浏览上下文名称"或关键字是任何"有效浏览上下文名称"或......的字符串. (7认同)
  • Securitywise这是一个重要的阅读http://mathiasbynens.github.io/rel-noopener/ (7认同)
  • @lyoshenka,@ x3ro:我冒昧地将上一段添加到引用中.这应该可以消除困惑. (6认同)
  • 请考虑添加人们还应添加"rel ="noopener noreferrer"`由于[javascript攻击漏洞](https://www.jitbit.com/alexblog/256-targetblank---the-most-underestimated-vulnerability-永远/)`target ="_ blank"` (6认同)
  • @aesede:阅读规范.它们___无效,因为"my_custom_name"可能不以下划线为前缀.因此"新"会很好,但"_new"不是! (5认同)
  • 请在大多数流行的浏览器中添加当前不合规的`_new`处理... (2认同)

Abh*_*ert 125

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

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

  • 它将搜索上下文名称为"_new"的选项卡或窗口
  • 如果找到"_new"选项卡/窗口,则将URL加载到其中
  • 如果找不到,则创建一个新的选项卡/窗口,其上下文名称为"_new",并且URL已加载到其中

注意target="_new"将表现完全相同target="new",后者是有效的HTML,而前者是无效的HTML.

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

  • 所以,基本上,如果我有两个(或更多)链接`target ="_ new"`,它们都将在同一个标​​签中打开,一个覆盖另一个? (4认同)
  • @ art-solopov据我所知,是的,这就是每个浏览器都会发生的事情.但是"_new"是目标的非法值,所以不要这样做. (4认同)

abe*_*312 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
Run Code Online (Sandbox Code Playgroud)

由于"_new"不是任何这些IT将在"framename"下进行,因此如果用户重新点击该超链接,它将不会打开新选项卡而是更新现有选项卡.而在_blank中,如果用户点击两次,则打开2个新标签.


Mic*_*cky 18

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

建议(性能优势)使用 _blank


cor*_*ded 13

这可能是之前被问过但是:

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

如果你使用target ="_ blank",那么每次都会在当前窗口的顶部创建一个全新的窗口."

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


Abu*_*yah 12

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


the*_*ter 12

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

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

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


cnd*_*cnd 9

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

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


Jam*_*ard 5

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

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

您可以单击此处何时使用_blank或_new自行试用.

  • 该规范实际上建议浏览器“忽略”以下划线开头但不是关键字的目标。没有关于浏览器“忽略”无效目标名称时应该做什么的建议。可能性包括:(1)将其视为“_blank”(2)将其视为窗口名称(就好像没有非法下划线)(3)将其视为显式空窗口名称(4)将其视为那里没有目标属性。——任何浏览器都可以选择任何解释。 (2认同)