我了解到,嵌套锚标记不是符合标准的HTML。
从W3:
由A元素定义的链接和锚点不得嵌套;A元素不得包含任何其他A元素。 由于DTD将LINK元素定义为空,因此LINK元素也不能嵌套。
由A元素定义的链接和锚点不得嵌套;A元素不得包含任何其他A元素。
由于DTD将LINK元素定义为空,因此LINK元素也不能嵌套。
看起来像在此问题中所选答案中建议的替代方案相比,简单地嵌套锚点,更有可能产生意外行为!
使onclick事件处理程序仅用于重定向JS页面似乎也有些过头。更不用说使用脚本解决方案,这会给禁用了脚本的用户浏览带来麻烦。
编辑
有趣的是,我正在做一个小提琴来演示,而我却忽略了chrome实际上是在重组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>
我忽略了这一点,因为我看到悬停正在工作并且将鼠标放在文本上。现在知道这一点并不一定会改变我的问题,但可以肯定地说明了它甚至还没有达到我的想法。
请记住,锚不仅是一个链接,而且还是可以链接的对象。(虽然前者使用的是 远远 比后者更常见。)报价W3C(老了,但相关的):
锚点是一段文本,用于标记超文本链接的开始和/或结束。
为此,不要将锚视为链接。可以将其视为文档中连接到(和/或来自)另一点的一点(在同一文档或另一文档中,这没有区别)。在某些非物理空间中的两个点通过非物理线程连接。
鉴于此,锚点不应包含太多内容。如果包含很多内容,它将不再成为“要点”,而开始成为“区域”。例如,想象一下一个锚点,该锚点在渲染时会占用比浏览器一次显示更多的空间。如果某个东西链接到该锚点,应该去哪里?开始?中间?结束?(直觉上,您可能会想到开始,但是您明白了。)
此外,锚点绝对不应包含其他锚点。非物理点之间的非物理连接可能会变得模棱两可。子锚是否连接到另一点,还是父锚连接到另一点?在大多数情况下,这 可能 不会造成很大的影响,因为当今 绝大多数 锚点都是从锚点到另一个文档的单向链接。但是锚点的目的不仅仅是指向另一个文档的单向链接,因此定义继续体现了这一目的。