3

我在 chrome 中遇到了问题(我认为也是 firefox)我有一些看起来像这样的 html:

<a id="outside">
    <span id="middle>
        :contents
    </span>
</a>

如果 :contents 评估为字符串或锚点以外的标记,则按预期呈现;

<a id="outside">
    <span id="middle">
        inside
    </span>
</a>

或者

<a id="outside">
    <span id="middle">
        <div id="inside"></div>
    </span>
</a>

但是,如果它评估为锚点,则呈现如下:

<a id="outside">
    <span id="middle>
    </span>
</a>
<a id="inside"></a>

锚在跨度之外跳跃。为什么?我能做些什么来解决这个问题?

4

2 回答 2

4

要修复它,您必须确保您永远不会将锚标记嵌入另一个锚标记 - 结果是不可预测的,因为它不符合标准。

如果您可以控制生成的代码,请确保通过将顶级锚替换为可以包含 adiva标签的东西来整理 HTML - 也许是另一个div元素?

参考:

于 2013-05-30T17:04:54.763 回答
1

这很可能是因为您的浏览器正在尝试“修复”您的非法 HTML。根据 W3 文档:

12.2.2 Nested links are illegal

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.

这是文档的链接:http: //www.w3.org/TR/html4/struct/links.html#h-12.2.2

于 2013-05-30T17:11:12.927 回答