html - 有必要写 HEAD、BODY 和 HTML 标签吗?

有必要写<html> , <head><body>标签?

比如我可以做这样一个页面:

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

还有 Firebug正确分离头部和 body :

W3C validator说它是有效的。

但我很少在网上看到这种做法。

写这些标签有什么理由吗?

最佳答案

省略 htmlheadbody tags 当然是 HTML 规范允许的。根本原因是浏览器一直在寻求与现有网页保持一致,而 HTML 的早期版本并没有定义这些元素。当 HTML 第一次这样做时,它是以一种在缺少标签时会推断出标签的方式完成的。

我经常发现在原型(prototype)设计时省略标签很方便,尤其是在编写测​​试用例时,因为它有助于使标记专注于有问题的测试。推理过程应该完全按照您在 Firebug 中看到的方式创建元素,并且浏览器在这方面非常一致。

但是……

Internet Explorer在这方面至少有一个已知的错误。偶Internet Explorer 9展示了这一点。假设标记是这样的:

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

您应该(并且在其他浏览器中这样做)获得 DOM看起来像这样:

HTML
    HEAD
        TITLE
    BODY
        FORM action="#"
            INPUT name="var1"

但是在 Internet Explorer 中你会得到这个:

HTML
    HEAD
       TITLE
       FORM action="#"
           BODY
               INPUT name="var1"
    BODY

See it for yourself.

此错误似乎仅限于任何文本内容和任何 body 开始标记之前的 form 开始标记。

https://stackoverflow.com/questions/5641997/

相关文章:

html - 将居中文本添加到水平线的中间

html - 为什么类型为 "number"的 html 输入允许在字段中输入字母 'e'?

image - 如何在保持图像纵横比的同时拉伸(stretch)图像以填充

javascript - 如何使用 JavaScript 获取 HTML 页面的标题?

html - 如何在 div 中使按钮居中?

html - XHTML 中所有有效的自闭合元素(由主要浏览器实现)是什么?

html - 如何删除css中的背景图像?

html - 如何更改 Canvas 元素中元素的不透明度(alpha、透明度)?

javascript - 获取元素的父div

html - 如何防止滚动条覆盖 IE10 中的内容?