锚标记目标属性中_self、_top和_parent之间的区别

Posted

技术标签:

【中文标题】锚标记目标属性中_self、_top和_parent之间的区别【英文标题】:Difference between _self, _top, and _parent in the anchor tag target attribute 【发布时间】:2013-08-30 11:25:03 【问题描述】:

我知道_blank 与锚标记一起使用时会打开一个新选项卡,而且我在使用框架集时会使用自定义目标,但我想知道_parent_self 和 @ 之间的区别987654324@.

【问题讨论】:

【参考方案1】:

html 4.01 规范中的6.16 Frame target names 部分定义了含义,但部分内容已过时。它指的是“窗口”,而 HTML5 草案更实际地谈论“浏览上下文”,因为现代浏览器在这种情况下经常使用选项卡而不是窗口。

简而言之,_self 是默认设置(当前浏览上下文,即当前窗口或选项卡),因此仅覆盖<base target=...> 设置才有用。值_parent 指的是当前框架的父框架集,而_top“跳出所有框架”并在整个浏览器窗口中打开链接的文档。

【讨论】:

这是target 的 HTML5 草稿的链接:w3.org/TR/html-markup/a.html#a.attrs.target。【参考方案2】:

target="_blank"

打开一个新窗口并显示相关数据。

target="_self"

在同一个框架中打开窗口,表示已经存在的窗口本身。

target="_top"

在整个窗口中打开链接的文档。

target="_parent"

以父窗口大小打开数据。

【讨论】:

“全身”是什么意思? @robsch 看到詹姆斯约翰逊的回答 那么target="_main"属性讲的是什么?【参考方案3】:

虽然这些答案很好,但恕我直言,我认为它们并没有完全解决这个问题。

锚标记中的目标属性告诉浏览器锚的目的地的目标。它们最初是为了操纵和引导锚点到文档的框架系统而创建的。这是在 CSS 帮助 HTML 开发人员之前。

虽然target="_self" 是浏览器的默认设置,最常见的目标是target="_blank",它在新窗口中打开锚点(通常通过浏览器设置重定向到选项卡)。 "_parent""_top"framename 标签对于那些不熟悉 iframe 网站建设时代的人来说是个谜。

target="_self" 这会在同一帧中打开一个锚点。令人困惑的是,因为我们通常不再在框架中写入(并且 frameframeset 标记在 HTML5 中已过时),人们认为这是一个相同的窗口函数。相反,如果此锚点嵌套在框架中,它将以某种沙盒模式打开,这意味着仅在该框架中。

target="_parent" 如果它们相互嵌套,则会在框架的下一级打开

target="_top" 这会在它嵌套的所有框架之外中断,并在浏览器窗口中将链接作为顶部文档打开。

target="framename 这最初已被弃用,但在 HTML5 中重新出现。这将针对有问题的确切框架。虽然name 是正确的方法,但该方法已被使用id 标识标签替换。

<!--Example:-->

<html>
<head>
</head>
<body>
<iframe src="url1" name="A"><p> This my first iframe</p></iframe>
<iframe src="url2" name="B"><p> This my second iframe</p></iframe>
<iframe src="url3" name="C"><p> This my third iframe</p></iframe>

<a href="url4" target="B"></a>
</body>
</html>

【讨论】:

太棒了。我想回到 iframe 框架。【参考方案4】:

这里是一个不同的Anchor标签的实际例子

Target Attribute

【讨论】:

请将链接文章的相关部分复制到 SO 以供后代使用。 仅链接响应不被视为 SO 上的答案。因为这是一个有用的评论的一个很好的例子。要被视为答案,您需要将链接页面中的相关信息直接嵌入到您的帖子中。有关详细信息,请参阅 SO 帮助页面。 链接失效了! @RevnicRobert-Nick 已恢复链接【参考方案5】:

下图显示了嵌套帧和不同目标值的效果,后面是对图像的解释。

想象一个网页包含 3 个嵌套的 &lt;iframe&gt; aka "frame"/"frameset"。所以:

最外层的网页/浏览器是起始上下文 最外面的网页是第 3 帧的父页面 第 3 帧是第 2 帧的父帧 第 2 帧是第 1 帧的父帧 第 1 帧是最里面的帧

那么目标属性有这些作用:

如果框架 1 具有 target="_self" 链接,则链接以框架 1 为目标(即链接以包含链接的框架为目标(即以自身为目标)) 如果框架 1 具有 target="_parent" 链接,则链接以框架 2 为目标(即链接以父框架为目标) 如果框架 1 有一个链接target="_top",则链接指向初始网页(即链接指向最顶部/最外层的框架;(在这种情况下;链接跳过祖父框架 3)) 如果框架 2 有一个 target="_top" 链接,则该链接指向初始网页(即再次,该链接指向最顶层/最外层框架) 如果这些框架中的任何一个有一个target="_blank"的链接,该链接的目标是一个辅助浏览上下文,也就是一个 “新窗口”/“新标签” 这适用于第 3 帧、第 2 帧、第 1 帧和最外面的网页。在target="_blank" 的情况下小心“tabnabbing”; use the rel="noopener" attribute

【讨论】:

请解释您的“答案”。这张图片本身并不清楚。 如果我错了,请纠正我。这是我查看图像时的理解: 1. _parent - 单击时在第 2 帧中打开第 1 帧中的链接。 2. _self - 单击时在第 1 帧中打开第 1 帧中的链接。 3. _blank - 任何链接都将在单击时在新选项卡中打开,无论它实际位于哪个框架中,即使它位于嵌套 iframe 中也是如此。 4. _top - 链接将在单击时在当前选项卡中打开,无论它实际位于哪个框架中,即使它位于嵌套 iframe 中。 嗨,@SherylHohman,我试图为图像添加解释。嗨,Binaya,你对我在解释中使用的语言满意吗? (我认为解释有助于可访问性(即视障用户)、翻译成其他语言、搜索引擎等)谢谢。

以上是关于锚标记目标属性中_self、_top和_parent之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

Web前端面试题第六道—链接标记target与Dom,Bom

html中target四种选择_blank_parent_self_top,分别是什么意思?

html中target四种选择_blank_parent_self_top,分别是什么意思?

jQuery:将 onClick 绑定到指向具有 target=_self 的其他页面的所有锚点

SSRS钻取GO到URL Target = _Top

目标 =“_blank” 在 IOS 中不起作用