李宗辉

John Lee

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

HTML5中的可以全部省略的标记元素

      HTML5中html head body标签是可以省略的,html5中省略写html标签head标签body标签是合法的,那么我们在写规范的html5文档时,html标签head标签body标签有没有必要写上去呢?

例如:我们可以创造这样一个合法的html5文档。

<!DOCTYPE html>     
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Page Title</title>
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <script src="js/head_script.js"></script><!-- this script will be in head //-->


<div>Some html</div> <!-- here body starts //-->

    <script src="js/body_script.js"></script>

在这个文档中我们省略了html标签head标签body标签,浏览器会帮助我们生成我们没有写明的标签元素。例如FireFox浏览器就会正确解析:

W3C组织推荐的说,写上这些标签是很有必要的。现在web页面上很少有这方面的实践,但是写上这些标签还是很有必要的。

HTML5中html标签head标签body标签应该省略吗

      HTML5中html标签head标签body标签应该省略吗?W3C组织推荐的说,写上这些标签是很有必要的。原因如下:

      尽管HTML5中html标签head标签body标签是被允许省略的,省略过后浏览器在解析这些代码的时候会自动帮我们加上这些隐藏的标签元素。但是这也是写上这些标签元素的根本原因,即浏览器总是在试图创建与现有网页一致的文档结构,而且这些标签元素在很早的HTML版本中是没有被定义的,这些html标签head标签body标签是在HTML2.0时创建的,因此,当这些标签被省略或者忘记写的时候,浏览器总是要去推断这些标签的存在,以及推断这些标签怎么存在。

      那么此时问题就出来了,不同的浏览器解析省略了html标签head标签body标签的HTML文档时,可能会得到不同的DOM结构,相信写JavaScript遍历DOM结构的程序员是对这种不同浏览器产生不同DOM结构有切肤之痛的。例如:

在最新的ie中有这样一个BUG,在ie9中也还存在。

<!DOCTYPE html>
<title>Test case</title>
<form action='#'>
   <input name="var1">
</form>

 

在其他浏览器(如FF)中你会得到

在ie9中你会得到

总结

HTML5中html head body标签应该省略吗?我们有没有必要再HTML5文档中写html head body标签?欢迎高手给予答案。

posted on 2012-09-20 15:25  李宗辉  阅读(6555)  评论(0编辑  收藏  举报