2013-05-30 70 views
2

我遇到Chrome的问题(和Firefox也一样,我认为) 我有一些HTML,看起来像这样:锚点内锚跨,中铬

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

,如果:内容评估为除锚点以外的字符串或标签,它按预期呈现;

<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> 

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

回答

3

要解决这个问题,你必须确保你永远不会嵌入一个锚标签insider另一个锚标签 - 结果是不可预测的,因为它不符合标准。

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

参考文献:

+0

随着HTML5的(除非上次我看了看事情已经改变),它是完全有效的内包装一个块级元素'a'元素。 –

+0

你的评论是绝对正确的 - 我会从答案中删除这一点。 – technophobia

+0

谢谢。 “外部”锚点是我决定用于提供跨度内容的工具提示的解决方案的一部分。我想我必须找到一个不同的解决方案。 – TriesToCommunicateClearly

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