浏览器呈现多个嵌套标签

时间:2014-04-04 21:12:18

标签: html

想象一下这个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代码中是否应该允许任何代码?

我在这里缺少什么?

3 个答案:

答案 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标签是非法的原因。