为什么嵌套的锚标签是非法的?

Dou*_*row 33 html tags dtd

我了解到嵌套锚标签不符合标准的HTML.

从W3:

由A元素定义的链接和锚点不得嵌套; A元素不得包含任何其他A元素.

由于DTD将LINK元素定义为空,因此LINK元素也可以不嵌套.

看起来像在这个问题的选定答案中建议的那些替代品将比仅仅嵌套锚点更有可能产生意想不到的行为!

使用onclick事件处理程序只是为了重定向JS中的页面似乎有点过分.更不用说使用脚本解决方案会导致用户在禁用脚本时浏览时出现问题.

编辑

有趣的是,我工作的一个小提琴来证明,我已经忽略了镀铬实际上重组DOM这样:

<div id="container">

    <a href="http://yahoo.com"></a>
    <div class="parent">
        <a href="http://yahoo.com">Parent Element</a>
        <a href="http://google.com">
            <div class="child">Child Element</div>
        </a>
        <a href="http://bing.com">
            <div class="child">Other Child</div>
        </a>
    </div>

</div>
Run Code Online (Sandbox Code Playgroud)

我忽略了这一点,因为我看到悬停工作并将鼠标放在文本上.现在知道这一点并不一定会改变我的问题,但它确实证明它甚至不像我想象的那样工作.

Dav*_*vid 35

请记住,锚不仅仅是一个链接,它也是一个可以链接的东西.(虽然前者使用的是远远比后者更常见.)报价W3C(老了,但相关的):

锚是一段文本,标记超文本链接的开头和/或结尾.

为此,不要将锚视为一个链接.将其视为文档中连接到(和/或来自)另一个点的点(在同一文档或其他文档中,它没有区别).某些非物理空间中的两个点由非物理线程连接.

鉴于此,锚点不应包含大量内容.如果它包含很多内容,它就不再成为一个"点"并开始成为一个"区域".例如,想象一个锚点,当渲染时占用的空间比浏览器一次显示的空间大.如果有东西链接到那个锚,它应该去哪里?一开始?中间?结束?(直觉上你可能会想到开头,但你明白了.)

此外,锚点绝对不应包含其他锚点.非物理点之间的非物理连接可能变得模糊不清.子锚点是否连接到另一个点,或者父锚点是否连接到另一个点?这可能不会导致被在大多数情况下,一个大问题,因为庞大的今天大多数锚是从锚点到另一个文档单向链接.但锚的目的不仅仅是与另一个文档的单向链接,因此该定义继续体现这一目的.

  • 完美的解释,也突出了这么多标签的意图与我们理解/使用它们之间的脱节.有趣的是,这在HTML5中有所改变,<a>标签现在明确定义为超链接,而不仅仅是一个锚.对内容的"限制"也被取消,使得<a>标签正式能够包含"块"级内容(现在称为"流").[W3.org](http://dev.w3.org/html5/markup/a.html) (7认同)
  • 当导航元素可点击但不是锚点时,它们会破坏屏幕阅读器等基本Web功能,在新选项卡/窗口中打开以及复制URL. (5认同)
  • 有一个设计原则,点击/点击目标应尽可能大.按照这个原则,链接应该是区域.HTML规范可能对此事有不同意见,但我认为它们是错误的. (4认同)
  • 嵌套可点击元素是其他所有标签的标准,并且行为是明确定义的(从底部开始并向上冒泡)。除了设计中的保守性之外,这里的原始规范没有任何优点;这都是缺点:没有可访问性,没有导航提示,没有访问/活动样式,事件冒泡的意外中断,对触摸屏的支持不佳 *此处尝试触摸零维非物理点以连接到另一个页面:/* (3认同)
  • 就个人而言,我认为这些(我所看到的一切,特别是你的帖子)都是糟糕的借口.建立某种约定.甚至可以添加一些HTML属性,这些属性可以提供给锚元素,以便在任何已决定的约定之上添加自定义.您可以明确地导出嵌套锚标记的行为,就像您可以使用样式明确地派生嵌套和兄弟元素的布局行为一样. (2认同)

Exp*_*lls 7

用于规范<a>具有的内容模型:

透明,但必须没有互动内容后代.

所以规范实际上比你说的复杂.这也适用于<button>- 基本上你不能在按钮内的链接或按钮内部有工作链接.

不幸的是我没有一个强有力的回答你的问题,为什么 -我只能猜测.一个明显的原因是它引起的歧义(例如,当单击内部时应该遵循哪个锚点?)

这不仅会产生功能歧义,还会产生语义模糊.该内容<a>是其超链接的标签.那么这是否意味着内部超链接是外部链接内容的标签的一部分?

  • 然而,歧义并不是一个无法解决的问题。想出一些约定以及一些用于控制的 HTML 属性有多难? (2认同)