以下网页将在Firefox 3.5中以意外结果呈现.第一个<地址>元素不会有粉红色的背景,但第二个会.这只发生在我身上吗?我的代码不正确吗?或者这是一个错误?
编辑:这也发生在Firefox 3.6中
- <!doctype html>
- <html lang="en">
- <head>
- <Meta charset="UTF-8">
- <title>Firefox 3.5 bug!</title>
- <style>
- address
- {
- background: pink;
- }
- </style>
- </head>
- <body>
- <address>
- <ul>
- <li>This will NOT have a pink background in Firefox 3.5</li>
- </ul>
- </address>
- <address>
- <p>But this will</p>
- </address>
- </body>
- </html>
解决方法
在你的HTML或浏览器中,这不是一个真正的错误.更多的是你正在使用HTML5和Firefox 3.x没有足够的HTML5识别.
HTML 4.01,the Address element定义为:
- <!ELEMENT ADDRESS - - (%inline;)* -- information on author -->
所以它只允许内联内容. < UL>不是内联内容,因此Firefox 3.x在其破坏的标记处理规则中决定不允许< ul>在< address>内
在HTML5之前,错误处理行为没有标准化,并且其他浏览器选择了不同的错误处理行为,这允许< ul>在< address>内
当HTML5出现时,它改变了有效性规则,因此,the address element定义为:
- 4.4.10 The address element
- Content model:
- Flow content,but with no heading content descendants,no sectioning
- content descendants,and no header,footer,or address element descendants.
在此< ul>中在< address>内有效,因此HTML5解析规则被定义为< ul>将被放置在<地址>内解析器的元素.
Firefox 4及更高版本使用HTML5解析器,因此不会出现问题.