HTML5 解析规则分析


Posted in HTML / CSS onAugust 14, 2009

尽管HTML 5中的一些部分目前争议比较大,关于解析的这部分得到了浏览器厂商的一致认同。一旦浏览器开始实现它,用户就可以从所带来的兼容性提升中获益。

HTML 5解析规则的最初实现之一是为了支持HTML 5验证器而开发的。(如果你想测试这个验证器的话,http://ejohn.org应该是合法的HTML 5。)这个实现是用Java开发的,提供了SAX和DOM的接口,并且是开源的。

有趣的是Henri Sivonen(验证器的作者)最近为Gecko开发了一个全新的HTML 5解析引擎,会在下一个版本的Firefox中使用。

这个实现实际上是通过把Henri的HTML 5解析器的Java实现自动转换为C++来完成的。这个转换是自动完成的,所有的改动都会提交到Mozilla的代码库中。

一般来说,当提到这种大规模的程序式的把Java代码库转换到C++的做法时,我会跳出来。不过结果非常的出人意料:页面加载的性能提升了3%。

这些是建立在该代码库会提供的一连串的bug修正和一致性检查的基础上。你可以在Mozilla的bug库中查看该补丁的进度。

如果你想尝试新的解析器的话(你不太可能发现很多明显的变化,但是任何寻找bug的努力都是值得感谢的。),下载一个Firefox的每日构建版本,打开about:config,把html5.enable设成true就可以了。

如果想升级到HTML 5,那么现在就是时候。因为HTML 5是HTML 4和XHTML 1提供的功能的超集,所以升级是非常容易的。只需要把目前的(X)HTML文档类型声明换成HTML 5文档类型就可以了。

<!DOCTYPE html>你可以从HTML 5 Doctor网站中找到如何让新的HTML 5元素在所有浏览器上都工作的细节。

HTML / CSS 相关文章推荐
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
Oct 11 HTML / CSS
CSS3实现各种图形的示例代码
Oct 19 HTML / CSS
详解css3使用transform出现字体模糊的解决办法
Oct 16 HTML / CSS
HTML5 新旧语法标记对我们有什么好处
Dec 13 HTML / CSS
使用分层画布来优化HTML5渲染的教程
May 08 HTML / CSS
五个2015 年最佳HTML5 框架
Nov 11 HTML / CSS
HTML5 history新特性pushState、replaceState及两者的区别
Dec 26 HTML / CSS
html5手机端页面可以向右滑动导致样式受影响的问题
Jun 20 HTML / CSS
使用canvas实现黑客帝国数字雨效果
Jan 02 HTML / CSS
HTML中meta标签及Keywords
Apr 15 HTML / CSS
flex弹性布局详解
Mar 20 HTML / CSS
详解CSS中postion和opacity及cursor的特性
Aug 14 HTML / CSS
HTML5 CSS3新的WEB标准和浏览器支持
Jul 16 #HTML / CSS
HTML5 b和i标记将被赋予真正的语义
Jul 16 #HTML / CSS
HTML5 新事件 小结
Jul 16 #HTML / CSS
html5 标签
Jul 16 #HTML / CSS
HTML5 Canvas标签使用收录
Jul 07 #HTML / CSS
HTML5 Canvas 起步(2) - 路径
May 12 #HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
May 12 #HTML / CSS
You might like
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
php四种基础算法代码实例
2013/10/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
php程序内部post数据的方法
2015/03/31 PHP
jQuery EasyUI API 中文文档 - Draggable 可拖拽
2011/09/29 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
vue debug 二种方法
2018/09/16 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
JavaScript Canvas编写炫彩的网页时钟
2019/10/16 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
Python字符串处理实现单词反转
2017/06/14 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
物业管理求职自荐信
2013/09/25 职场文书
工程部部长岗位职责
2015/02/12 职场文书
学年个人总结范文
2015/03/05 职场文书
redis实现排行榜功能
2021/05/24 Redis
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers
Python语言中的数据类型-序列
2022/02/24 Python
Nginx 常用配置
2022/05/15 Servers
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技