在HTML5中,一个<a>标签可以包含一个<footer>标签吗?

3

我有以下结构:

<a href="#">
  <footer>
    <p>Some text</p>
    <h2>A Heading</h2>
  </footer>
</a>

在所有浏览器中,这段代码都能正常工作并显示(即使在使用HTML5shiv.js的IE6中),但Firefox 3.6却完全乱了。在Firefox 3.6中,显示效果完全失真,如果你使用Firebug来检查DOM,则<footer>元素为空,应该在其中的元素却在外面。
所有标签都正确关闭。CSS中<a>设置为display:block
W3C验证器验证了文档,并未将此结构标记为不正确。
规范说明当<a>元素包含其他流内容时,可以将其归类为流内容。而<footer>是流内容。
是否只是Firefox 3.6无法完全正确地呈现HTML?
有没有修复的想法?
谢啦!

2
我没有资源,但我记得阅读过HTML5的一部分,其中锚元素现在可以包含块级元素。编辑:我刚刚测试了上面的代码http://validator.w3.org/check,它是有效的。 - Seth
2个回答

3
根据W3C HTML5参考页脚元素内容模型为:

流内容,但没有标题内容后代,没有分区内容后代和没有页脚元素后代。

a元素是交互内容。(也可以是流内容

因此,如果您根据HTML5标准验证它,则使用a元素将得到验证。可以使用W3C验证器之类的工具进行验证。

所以回答您的问题,Firefox 3.6不完全符合HTML5标准。 Firefox 4.0比3.6更符合标准。您可以在这里找到传统浏览器支持的HTML5(和CSS3)元素列表。

至于修复方法,我建议您从Firefox中隐藏页脚,并显示一个只有Firefox才能看到的包含内容的div。我建议使用jQuery 使用jQuery进行CSS浏览器检测而不是使用Hack


1

Firefox 3.6没有实现HTML5解析算法,基本上只有一个HTML4的“解析器”。

我认为你的解决方案有:

  1. 在页脚内避免使用“块级”的HTML标签。
  2. <span>作为<a>的子元素包裹<footer>
  3. <div>作为<a>的子元素包裹<footer>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接