发表于: 2017-05-15 23:27:22

0 1169


今天完成的事情:

HTML文件里开头的Doctype有什么作用?

小课堂【成都小课堂】

分享人:吴彦澄

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

故事要从互联网发展的初期讲起:互联网发展最初的时候,浏览器厂家方兴未艾,其中以网景和微软两家公司最为强大。两家公司为了抢占市场份额,展开了一系列商业竞争,史称。。。

第一次浏览器大战

然而当年Netscape4和IE4实现CSS机制时,并没有遵循W3C提出的标准。为了保障自己的网站在各个浏览器上显示正确,网页开发者们不得不依据各个浏览器自身的规范来使用css,因此大部分网站的css实现并不符合W3C规范的标准。然而随着标准一致性越来越重要,浏览器开发商不得不面临一个艰难的抉择:逐渐遵循W3C的标准是前进的方向。但是改变现有的 css,完全去遵循标准,会使许多旧网站或多或少受到破坏,如果浏览器突然以正确的方式解析现存的css,陈旧的网站的显示必然会受到影响。所以,所有的浏览器都需要提供两种模式:混杂模式服务与旧式规则,而严格模式服务于标准规则。

doctype就担当了告诉浏览器工作于哪种模式的任务

2.知识剖析

从SGML说起

  • 标准通用标记语言,是一种定义电子文档结构和描述其内容的国际标准语言.
  • 标记分为两种:一种称为“程序性的标记”,用来描述文档显示的样式;
  • 另一种称为“描述性标记”,用来描述文档中的文字的用途。
  • 制定“通用标言”的基本思想是把文档的内容与样式分开。

Doctype是什么

Doctype(document type)即文档类型,是一组机器可读的规则,它们指示(X)HTML文档中允许有什么,不允许有什么,Doctype正是用来告诉浏览器使用哪种DTD,一般放在(X)HTML文档开头声明)用以告诉其他人这个文档的类型风格。

那么问题来了。。。

DTD是什么

文档类型定义(Document Type Definition)是一套为了进行程序间的数据交换而建立的关于标记符的语法规则。

  • 是SGML的一部分
  • 它使用一系列合法的元素来定义文档的结构。
  • 它可被成行地声明于 XML 文档中,也可作为一个外部引用。
  • 通过它,独立的团体可一致地使用某个标准的文档类型定义来交换数据。
  • 而您的应用程序也可使用某个标准的文档类型定义来验证从外部接收到的数据。
  • Doctype可声明三种DTD类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。

标准模式和混杂模式

  • 在标准模式中,浏览器以其支持的最高标准呈现页面.
  • 在混杂模式中,页面以一种比较宽松的向后兼容的方式显示。
  • 混杂模式通常模拟老式浏览器的行为以防止老站点无法工作。

模式触发

  • 如果XHTML、HTML 4.01文档包含形式完整的DOCTYPE,那么它一般以标准模式呈现。
  • 包含过渡DTD和URI的DOCTYPE也导致页面以标准模式呈现,但是有过渡DTD而没有URI会导致页面以混杂模式呈现。
  • DOCTYPE不存在或形式不正确会导致HTML和XHTML文档以混杂模式呈现。

现今情况

html5协议下

统一写<!DOCTYPE html>

浏览器战争远未停止。。。

3.常见问题

问题1:如果不声明doctype会发生什么?

4.解决方案

实际上。。。

仍然跟各大互联网厂商有关

写代码要养成好习惯

解决方式就是每次都记得写上啊魂淡!

5.编码实战

6.扩展思考

问题一:有没有其他进入混杂模式的方法

除了不写DOCTYPE声明外,最常见的就是在DOCTYPE声明前面出现了这些内容:普通文本、HTML 标签、HTML 注释、XML 声明、IE条件注释。

7.参考文献

参考一:为何说 HTML5「no longer based on SGML」?

参考二:HTML_严格模式与混杂模式

参考三:严格模式与混杂模式-如何触发这两种模式,区分它们有何意义

8.更多讨论

讨论点一:取代html5的协议将会是谁?

鸣谢

感谢大家观看

BY : 吴彦澄


明天计划的事情:

ng2 ng2 ng2


遇到的问题:

墙太高,穿不过去.


收获:

回来后看了wiki查了一点资料,get实际上没有字节的限制,post适合发送大量数据,比如邮件和表单等,因为其一次发包于服务器握手后再发第二次,get只是发过去,性能上讲,get快,还有就是基于语意化,两者都是建tcp链接。

get带参数的问题可以加个重写url的地址覆盖掉原值
可以用nginx实现强制跳转回首页也可以用JavaScript重写地址实现伪静态 

返回列表 返回列表
评论

    分享到