Douglas Crockford 新文《Fixing HTML》

Well, 我们亲爱的JS God---Douglas Crockford有新货到了:《Fixing HTML》,针对HTML 5的标准老人家谈了谈他自己的想法,在 http://www.crockford.com/html/
欢迎讨论。

《Fixing HTML》-Douglas Crockford 2007-11-28-

HTML需要修正了。HTML4的推荐建议发布于1999年。从那时起,web已经从一个文档传发系统演变成为一个应用程序传送的通道。得益于web开发社区的集体智慧和JavaScript表现出来令人意外的威力,我们已经迈出了相当的步伐,但也出现了一些限制,让HTML无法引领下一轮的革命。它不能不说是一种障碍。

HTML里面有不少好的想法,却在XHMTL标准中遭到弃舍。我的想法是我们应先回溯一下旧有方案,并重新给予关注。HTML的问题不在用更臃肿和更复杂的方式来代替,而是把这些功能的优点归纳出来,-尽管现存的功能有不少问题。

HTML演变成为应用程序传输通道的同时亦应保留其扮演一种文档格式之角色。

我提议的新语言草案并不完全兼容HTML4。HTML4也不是完全兼容HTML3,XHTML就更是没有兼容过其它,-所以这不是问题。

我的草案是相对友好、相对平缓的HTML5:

HTML

<html>标签有了一个可选的版本属性。如果该值是5,那么应遵从HTML5的规则。如果是4或没有这个值,那就是HTML 4的规则。
<html version=5>
无须doctypes

脚本Script

只允许一种脚本在页面内。这能为将来加入新浏览器语言作出简化,减少相关的统一对象模型和内存模型。这也是出于以一个安全的程序语言来代替JavaScirpt的目的。如果一种不安全的语言和一种安全的语言混合在一起是没有安全性可言的。语言是由 content-script-type来指定。默认是application/ecmascript。
<meta http-equiv=content-script-type content=application/ecmascript>
<script>不指定一个type或language。他们是<head>或<body>直接的子元素。<script>不会被立即执行。<script>不阻止其它资源的加载。当到达</head>时,所有在head部分的脚本会一一照顺序被执行。当到达</body>时,所有在body部分的脚本会一一照顺序被执行。

无须document.write。无须页内事件句柄。无须javascript: urls。

Frames

无须framesets、frames、或iframes。 这些属性的安全性都是有问题的。而取而代之的是“模块(modules)”。

模块Modules

<module>建立了一个包含通讯通道文档的sub-tree。参阅 http://json.org/module.html的说明。我推荐Google的Gear和Adobe AIR这些更常见的通讯机制来代替<module>的这种机制。

CSS

默认的CSS内容需要标准化。参阅 http://developer.yahoo.com/yui/reset/的例子,浏览器应该将默认的样式尽量公共化。

getElementsByCSSSelector方法可允许基于CSS选择符的标记来收集元素。

CSS方面有许多需作出重大的改进,当中的内容已经超越了本文的范围。CSS也应稍加关注便可得到改善。可在一个制约的环境内,针对对齐、布局、和屏幕排版几个方面上更智能地改善CSS。

编码 Encoding

HTML 5只允许一种字符编码就是UTF-8。默认的多语言The allowance of a multitude of encodings with default and discoveredencodings exposes users to security exploits and reduces the integrityof documents.
声明编码和文档本身保存的编码不匹配,这种情况虽较少见,但单使用一种编码方式就能很好地避免这问题。The expansion of asian text can be mitigated by gzipping.(亚洲系的语言需要而外gzip???不是太明白)

实体 Entities

HTML 5是严格按照HTML实体形式陈述的。在过去,一些浏览器往往允许各种实体古怪的写法出现,把用户暴露在不安全的范围。浏览器过于自觉地把有害的内容显示出来,从而导致一系列的安全攻击发生。

空白的标签 Empty Tags

标签<empty/>的形式是允许的,但<br>或<hr>就不一定要求。<script src="url"/>标签亦可使用这种形式。

自定义标签Custom Tags

HTML总是允许自定义HTML标签的。HTML5就是第一公民的类。

CSS可用于自定义的样式标签。
mymenubar {display: div; width: 100%;}
Display的样式属性可作用于一个标签名字。这意味着当定义一个新的自定义标签时要分析那个标签的特征。

getElementsByTagName方法可用于收集自定义标签。

自定义属性Custom Attributes

HTML总是允许自定义HTML属性的。HTML5就是第一公民的类。

getElementsByAttribute方法可用于收集自定义标签。它需要一到两个的参数。第一参数是属性的名称。第二个可选的参数是匹配的值。

属性值只是数字,字母和特殊字符:+ - * % . : _:时不一定需要加引号,但引用(Quoting)仍然是好的实践

就是这些

这几个方面着重于HTML应用程序的可靠性、安全性和性能上的改进,同时简洁性降低了web开发者的学习曲线。这些都可以整理成为Ajax开发的最佳实践,扩展了新功能而无须更复杂。第四版本的HTML是一次归纳并有所精简,使得浏览器上的实现更加直接明了。这对移动设备尤其重要,因为电池的容量很难满足复杂平台的运算。这里唯一新的功能只是module,针对安全问题方面的。Modules使得mashups更加地安全。

你可能感兴趣的:(html,浏览器,html5,css,yui)