繁体   English   中英

target="_blank" vs. target="_new"

[英]target=“_blank” vs. target=“_new”

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

使用“_blank”

根据HTML5 规范

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

有效的浏览上下文名称或关键字是任何字符串,它要么是有效的浏览上下文名称,要么是不区分大小写的 ASCII 匹配项:_blank、_self、_parent 或 _top。”- 来源

这意味着 HTML5 中没有_new这样的关键字,HTML4(以及 XHTML)中也没有 这意味着,如果您将其用作目标属性的值,则不会有任何一致的行为。

安全建议

正如 Daniel 和 Michael 在评论中指出的那样,当使用 target _blank指向不受信任的网站时,您还应该设置rel="noopener" 这可以防止打开站点通过 JavaScript 干扰打开程序。 有关更多信息,请参阅此帖子

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

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

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

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

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

TL; 博士
使用_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 个新选项卡。

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

建议性能优势)使用:

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

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

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

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

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

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

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

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

target="_blank"在大多数浏览器中打开一个新选项卡。

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

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

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

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

您可以单击此处何时使用 _blank 或 _new亲自尝试一下。

链接的目标属性强制浏览器在新的浏览器窗口中打开目标页面。 使用_blank作为目标值,而每次使用产生一个新的窗口_new只会产卵一个新窗口,用的目标值,点击每一个环节_new将取代以前催生窗口中加载该页面

为了在新选项卡/窗口中打开链接,您将使用<a target="_blank">

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

_new = 无效; 元素上的目标属性在 HTML5 中没有这样的值

target 属性及其在元素上的所有值: 视频演示

在处理 Iframed 的页面时,使用 _New 很有用。 由于 target="_blank" 不能解决问题并在同一个 iframe 上打开页面...... target new 是 iframe 页面的最佳解决方案。 只有我的五美分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM