想象一下这个HTML块:
<a href="/somewhere/">
<div class="nested">
<div class="sub-nested">
<div class="sub-sub-nested">
<a href="/else/">button</a>
</div>
</div>
</div>
</a>
这会在我的浏览器中呈现:
<a href="/somewhere/"></a>
<div class="nested">
<a href="/somewhere/"></a>
<div class="sub-nested">
<a href="/somewhere/"></a>
<div class="sub-sub-nested">
<a href="/somewhere/"></a>
<a href="/else/">button</a>
</div>
</div>
</div>
仅当外部a
代码中有另一个a
标记时才会发生这种情况。
我完全不明白为什么会这样。这怎么可能。它让我疯了。
这个问题看起来很基本,我想知道我误解的HTML标准是什么?毕竟,从HTML5开始,a
代码中是否应该允许任何代码?
我在这里缺少什么?
答案 0 :(得分:1)
你不能下一个锚定标签。正如W3 says:
12.2.2嵌套链接是非法的
A元素定义的链接和锚点不能嵌套;一个A. element不得包含任何其他A元素。
答案 1 :(得分:1)
如果您尝试validate您的代码,您将获得
文档类型不允许元素“div”在这里; (...)
此消息的一个可能原因是您试图放置 内联中的块级元素(例如“
<p>
”或“<table>
”) 元素(例如“<a>
”,“<span>
”或“<font>
”)。
因此,您无法将<div>
放入<a>
。
答案 2 :(得分:0)
为了扩展为什么你不能嵌套A标签,浏览器不知道在哪里引导用户,因为多个A标签将具有多个HREF属性。这就是嵌套A标签是非法的原因。