从W3:
Links and anchors defined by the A element must not be nested; an A element must not contain any other A elements.
Since the DTD defines the LINK element to be empty,LINK elements may not be nested either.
看起来像在this question中的选择答案中提出的替代品可能会有更多的机会创建意想不到的行为,而不仅仅是嵌套锚点!
使用onclick事件处理程序只是为了在JS中重定向该页面也似乎是过分的。更不用说使用脚本解决方案会导致用户浏览脚本禁用的问题。
编辑
有趣的是,我正在fiddle进行演示,我忽略了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>
我忽略了这一点,因为我看到鼠标悬停在文本上。知道这一点现在并不一定会改变我的问题,但它确实说明,它甚至不能像我想象的那样工作。
解决方法
An anchor is a piece of text which marks the beginning and/or the end of a hypertext link.
为此,不要将锚点视为链接。将其视为连接到(和/或从另一个点)的文档(在同一文档或另一个文档中,它没有区别)。一些非物理空间中的两点由非物理线程连接。
假设,锚不应该包含很多内容。如果它含有很多内容,它就不再成为一个“点”,而是开始成为一个“区域”。例如,假设一个锚点在渲染时占用的空间大大超过浏览器一次显示的空间。如果有什么链接到那个锚点,它应该去哪里?开始吗中间?结束? (直观地,你可能会想到开始,但是你得到这个想法)
此外,锚点绝对不应该包含其他锚点。非物理点之间的非物理连接可能变得模糊。子锚是否连接到另一点,还是父锚连接到另一点?这在大多数情况下可能不是一个大问题,因为今天绝大多数的锚点是从锚点到另一个文档的单向链接。但是,锚的目的不仅仅是与另一个文档的单向链接,所以定义继续体现这个目的。