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

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

我了解到嵌套锚标签不符合标准的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>

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


阿波罗的战车
浏览 394回答 3
3回答

qq_花开花谢_0

请记住,锚不仅仅是一个链接,它也是一个可以链接的东西。(虽然前者使用的是远远比后者更常见。)报价W3C(老了,但相关的):锚是一段文本,标记超文本链接的开头和/或结尾。为此,不要将锚视为一个链接。将其视为文档中连接到(和/或来自)另一个点的点(在同一文档或其他文档中,它没有区别)。某些非物理空间中的两个点由非物理线程连接。鉴于此,锚点不应包含大量内容。如果它包含很多内容,它就不再成为一个“点”并开始成为一个“区域”。例如,想象一个锚点,当渲染时占用的空间比浏览器一次显示的空间大。如果有东西链接到那个锚,它应该去哪里?一开始?中间?结束?(直觉上你可能会想到开头,但你明白了。)此外,锚点绝对不应包含其他锚点。非物理点之间的非物理连接可能变得模糊不清。子锚点是否连接到另一个点,或者父锚点是否连接到另一个点?在大多数情况下,这可能不会导致大问题,因为今天的绝大多数锚点都是从锚点到另一个文档的单向链接。但锚的目的不仅仅是与另一个文档的单向链接,因此该定义继续体现这一目的。

宝慕林4294392

标准不推荐使用锚嵌套(尽管我测试的所有浏览器似乎都导致了最里面的点击目标),因为模糊不清。说一个重要的部分应该导致某个页面是不合逻辑的,在这一部分中,一个小部分应该引导到其他地方。我仍然需要看到这种行为的任何用例。随着可用脚本语言的发展,这种迭代或遗产可以起作用(例如,在div上的javascript点击事件),但是代码永远不会想要指向某个URL然后指向另一个(父锚点'href)。编辑:看看你在你的引用中提出的问题,堆叠2个指向完全相同的href的锚点是完全没用的。只需删除嵌套的一个,一切都会好的。如果是因为你做了一个像a a{color:red;}使用跨度的CSS规则!或者甚至是一个div&nbsp;display:inline但是请,非常请,一个锚应该去某个地方,不应仅仅用于造型目的或其他东西。
打开App,查看更多内容
随时随地看视频慕课网APP