我知道_blank
与锚标记一起使用时会打开一个新选项卡,并且在使用框架集时我会使用自定义目标,但我想知道_parent
,_self
和_top
.
5 回答
虽然这些答案很好,但恕我直言,我认为它们并没有完全解决这个问题。
锚标记中的目标属性告诉浏览器锚目标的目标。它们最初是为了操纵和引导锚点到文档的框架系统而创建的。这是在 CSS 帮助 HTML 开发人员之前很久。
虽然target="_self"
是浏览器的默认设置,最常见的目标是target="_blank"
在新窗口中打开锚点(通常已通过浏览器设置重定向到选项卡)。"_parent"
和标签对于那些不熟悉 iframe 网站建设时代的人来说是一个谜"_top"
。framename
target="_self"
这会在同一帧中打开一个锚点。令人困惑的是,因为我们通常不再在框架中编写代码(并且frame
andframeset
标签在 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>
下面是显示嵌套帧和不同目标值的效果的图像,然后是图像的解释。
想象一个包含 3 个嵌套的<iframe>
又名“框架”/“框架集”的网页。所以:
- 最外面的网页/浏览器是起始上下文
- 最外面的网页是第 3 帧的父级
- 第 3 帧是第 2 帧的父帧
- 框架 2 是框架 1 的父级
- 第 1 帧是最里面的帧
那么目标属性有这些效果:
- 如果框架 1 具有与 的链接,
target="_self"
则链接以框架 1 为目标(即链接以包含链接的框架为目标(即以自身为目标)) - 如果框架 1 与 有链接,
target="_parent"
则链接以框架 2 为目标(即链接以父框架为目标) - 如果框架 1 具有与 的链接,
target="_top"
则该链接针对初始网页(即链接针对最顶部/最外层框架;(在这种情况下;链接跳过祖父框架 3))- 如果框架2有一个与 的链接,
target="_top"
则该链接也以初始网页为目标(即再次,该链接以最顶层/最外层的框架为目标)
- 如果框架2有一个与 的链接,
- 如果 这些框架中的任何一个具有与
target="_blank"
的链接,则该链接以辅助浏览上下文为目标,即“新窗口”/“新选项卡”- 这适用于第 3 帧、第 2 帧、第 1 帧和最外面的网页。在以下情况下要小心“tabnabbing”
target="_blank"
;使用rel="noopener"
属性
- 这适用于第 3 帧、第 2 帧、第 1 帧和最外面的网页。在以下情况下要小心“tabnabbing”
HTML 4.01 规范中的第6.16 节框架目标名称定义了含义,但部分已过时。它指的是“窗口”,而 HTML5 草案更实际地谈论“浏览上下文”,因为现代浏览器在此上下文中经常使用选项卡而不是窗口。
简而言之,_self
是默认值(当前浏览上下文,即当前窗口或选项卡),因此它仅用于覆盖<base target=...>
设置。该值_parent
指的是当前框架的父框架集,而_top
“突破所有框架”并在整个浏览器窗口中打开链接的文档。
target="_blank"
打开一个新窗口并显示相关数据。
target="_self"
在同一个框架中打开窗口,这意味着现有的窗口本身。
target="_top"
在整个窗口中打开链接的文档。
target="_parent"
以父窗口大小打开数据。
这是一个不同的 Anchor 标签的实际示例