一尘不染

在锚标记内创建锚标记

html

在我的随机测试中,我看到了一种将锚标签放在另一个锚标签内的行为。我做了一个jsfiddle。

<a class="groupPopper">
     <a class="name"> content</a>
</a>​

但是在开发人员工具中,它看起来有所不同:

我相信我们不能将锚标记放在另一个锚标记内,因为单击内部锚会导致click事件冒泡到父锚标记,这是不允许的。

我的假设正确吗?


阅读 237

收藏
2020-05-10

共1个答案

一尘不染

aHTML语法禁止嵌套元素。HTML规范没有说明原因;他们只是强调规则。

从实际的角度来看,浏览器会在其解析规则中有效地实施此限制,因此与许多其他问题不同,违反规范将
不起作用。解析器有效地将<a>open a元素内的start标记视为在开始新元素之前隐式终止open元素。

因此,如果您编写<a href=foo>foo <a href=bar>bar</a> zap</a>,则不会获得嵌套元素。浏览器会将其解析为<a href=foo>foo</a> <a href=bar>bar</a> zap,即两个连续的链接,后跟一些纯
文本。

嵌套a元素没有内在的不合逻辑:可以实现它们,以便单击“ foo”或“ zap”激活外部链接,单击“ bar”激活内部链接。但是我看不到使用这种结构的理由,HTML的设计者也可能没有看到这种结构,因此他们决定禁止使用这种结构,从而简化了事情。

(如果您真的想模拟嵌套链接,则可以将普通链接用作外部链接,并将span具有适当事件处理程序的元素用作内部“链接”。或者,可以复制链接:<a href=foo>foo</a> <a href=bar>bar</a> <a href=foo>zap</a>。)

2020-05-10