2009年2月20日星期五

尝试IE8 RC1

其实前不久才升级了IE7,但因为CSS Filter导致ClearType强制关闭的问题,我又不愿意挂上GDI++,一直用得不太舒服。这几天看到IE8 RC1发布的消息,虽然有评测说IE8内存占用率很高,但想想用Maxthon应该影响不大,于是就装上试了试,感觉变化还蛮大的。

UI有变漂亮一点,菜单上多了很多Icon。“管理加载项”对话框Live风格明显,不过总觉得有点粗糙。内存占用似乎是比较高一点,但速度还不错。地址栏跟Chrome一样了,会突出显示顶级域名主体。

新增加功能方面。“加速器”(Accelerators)这个名字怪怪的,作用其实和BHO类似,叫Launcher或许还准确点。SmartScreen的作用机制不明,如果跟IE7反钓鱼功能类似,那其实没什么用。InPrivate隐私保护模式开启时,Cookie、历史纪录、Internet临时文件等内容不会被保存,工具栏和扩展也会被禁用。简而言之,都没多大用处。

比较实在的变化都在最终用户看不到的地方。IE8增加了一个看起来很强的调试工具,随便试了试感觉蛮好用的。JScript和VBScript更新至v5.8,内置了JSON对象,XMLHttp可以处理Timeout事件,以及一个新增的跨域访问对象XDomainRequest。尤其是XDomainRequest,如果Mozilla和Chrome等不跟进的话,网页设计师会很挣扎吧,真是命苦。

接下来就是我比较关心的部分。IE8有三种渲染模式,分别是IE5 Quirks模式、IE7 Strict模式和IE8 Standards模式。为了兼容IE6时代的网页,有一个Quirks模式好理解。但IE7自2006年10月发布至今不到3年,其造成的兼容性问题竟然也需要一个独立的Strict模式来解决,真是有出息。

默认情况下,IE8使用DOCTYPE来决定使用何种渲染模式。下表是不同DOCTYPE时,document.documentMode属性的值,5表示Quirks模式,8表示Standards模式。

Empty 5
<!DOCTYPE HTML> 8
HTML 5
HTML 2.0 5
HTML 3.0 5
HTML 4.0 8
HTML 4.0 Transitional 5
HTML 4.0 Strict 8
XHTML 8
XML 8

如果想为特定页面指定渲染模式,需要在head标签里加一个meta标签,比如想强制使用Standards模式可以写:<meta http-equiv="X-UA-Compatible" content="IE=8" />

IE8的默认渲染模式是IE=EmulateIE8,即根据DOCTYPE判断使用Quirks模式还是Standards模式。类似的还有一个IE=EmulateIE7,目前的Maxthon中默认采用了该模式(可以在设置中勾选“启用 IE8 标准渲染模式”启用EmulateIE8)。

扯这么多,我想说的其实还是CSS Filter导致ClearType强制关闭的问题。在IE8的Quirks模式和Strict模式下,这个问题依然存在,Standards模式下倒是修复了。所以,针对有问题的网页,只要在广告过滤器里把<head>替换为<head><meta http-equiv="X-UA-Compatible" content="IE=8" />即可解决问题。

顺带一提,Standards模式字体渲染效果不错,包括过去一直存在的微软雅黑字体下划线位置错误的问题也一并修复了。

没有评论 :