亚洲需要多些网页设计师

花了点时间在查看春季新番的官方网站上。由于我使用了Firefox NoScript的全局限制,所有网页在第一次加载时都无法显示Flash文件或运行Javascript,我稍微统计了一下不能正常工作的网站数量:100%。没有多余Javascript的网站全部使用Flash导航,没有Flash碍事的网站全部使用Javascript控制窗口浏览……

假设你的系统是Windows,假设你用IE,假设你允许Javascript,假设你安装了Flash……如果你以前不理解为什么店长在看到类似Pixiv的网站时泪流满面,你现在该体会到了。这是拥有再多带宽,再多电子产品都无法“获得”的知识,只有当网页开发者真正开始考虑用户体验时,他们制作的网页才不会像某些烂动画一样,只能被少数人所欣赏。

说起来,3月比特客栈的IE用户下降至65%,IE6(包括那些用IE Shell的人)只占30%左右了。很好,店长希望能在两年内将IE6的访问比率降到5%左右,当前IE6用户看到的那些升级劝告是第一步。

IE8与Version Targeting,新标准,新战争

更新:本文的争论告一段落,3月初在IEblog上的做出回应,宣布默认使用IE8的标准渲染模式,撤回了之前默认为IE7渲染模式的决定。(真讽刺)

试问各位旅客最近听说了IE的哪条新闻?是Opera对微软藐视W3C标准的控告,还是IE8内测版突破ACID2渲染测试的公告?或者更进一步,你甚至留意到IE8与它那最新功能:神奇的Version Targeting?无论如何,IE7带来的各种用户怒吼是微软所不希望承受的,而Version Targeting是他们的妥协方案

无聊也是情理之中,这不是明星八卦

停,请停下,Version Targeting是啥?为什么我要在意它?

事实是微软提出的Version Targeting(店长暂译“指定版本”,简称VT)就是为了让你意识不到它的存在。IE开发组的Chris Wilson在上面链接的文章中解释了IE8中的VT工作方式:

1. Quirks mode(当html文档缺乏标准doctype时的渲染模式)的工作方式不变;

2. Standard mode,IE8将默认沿用IE7对标准页面的渲染模式;

3. 网络上暂称Current ("Edge") mode,懂得标准的网页开发者将可以通过meta标签/http请求的header信息定义IE8使用最新的渲染模式。

简单点说,假设IE8正式版的渲染引擎真的通过了ACID2测试,也需要开发者额外添加一条meta信息它才会启用这个新版本引擎,否则浏览器将自动沿用IE7当前的引擎。撇开Opera的指控不谈,这是微软的又一个阴谋吗?

微软启用VT的对外理由非常简单:兼容性。他们的论点是在IE6向IE7的过渡中用户反映了大量网站不兼容的问题,这是由于(引用Chris的原文)“网站开发者期望IE7的工作方式与IE6相同,即便是在标准渲染模式下。”换句话说,由于大多数开发者无意识的使用了标准doctype,使得经典的渲染模式开关不再有效,为了不影响这些网站的使用,IE8必须继续沿用IE7的渲染引擎为默认引擎,以避免进一步造成混乱。

信不信由你,“新瓶装旧酒”,居然在“为了兼容性”的言辞下变成了用户友好的新功能。现在你该明白为什么有许多新闻说IE8有“三个渲染引擎”了,多出来的一个应该是IE7正在使用的Trident V(如果微软不是在忽悠WaSP)。

对于微软启用的“新标准”,网络上自然又是各家自有各家的说法。对网页标准感兴趣的旅客一定听说过PPKEric MeyerJeffrey Zeldman的大名,有趣的是,长期与微软争锋相对的他们这次非常和谐的站在IE的一方。WaSP内部的意见也有很大分歧,很多成员是在ALA的两篇文章发布之后才知道是WaSP的领头们构思了这个Version Targeting的建议。

支持方的观点(目前占少数)——

  • 没有VT的支持,IE开发团队根本没机会考虑标准化和持续更新的事情,因为新版本总在破坏网页渲染的模式(换句话说,不要说IE6,连IE7都距离W3C标准太远,持续更新引擎会让开发者/用户陷入困境。提供更新反而导致IE市场占有率下降,那领导们当然宁愿不更新引擎);- Eric Meyer

  • Version Targeting保护不懂网页标准的开发者与用户,这相比要求他们在一夜之间学会网页标准更加实际(如果IE团队选择不支持W3C标准,那标准也就失去了意义); – Jeff Zeldman

  • VT既然是微软开发团队自己接受的标准鉴别模式,那它应该100%工作,并且不影响其他浏览器,我们也无需再劳烦使用不稳定的浏览器嗅探。 – PPK

反对方的观点(目前占多数)——

  • Version Targeting将阻碍Progressive Enhancement的发展,放弃默认支持更标准的设计,反而选择继续蒙骗不知情的开发者,暗示旧渲染引擎的行为是“正常”的; – Jeremy Keith

  • 对开发者的“伤害”被夸大了,IE8的新引擎不会在IE7之上造成更大破坏,不使用doctype的产品也不受到新引擎的影响; – ALA上的留言

  • 微软应该将金钱与时间用在宣传标准与教育用户上,而不是号称“亡羊补牢”的将标准与兼容性联系起来……这是IE五年无引擎更新带来的后果,应该由微软自己承担; – Chris Heilmann

  • Quirk mode本来就是个向标准化过渡的产物,如果IE8还在引入“异名同义”的新Quirk mode,这只会给网页标准化带来负面影响; – Anne van Kesteren

  • VT将给IE团队带来太多困难,在一款浏览器内加入多个渲染引擎本身增加了IE的体积,维护浏览器安全时又需要同时照顾到每个引擎,即便成功推出,用户是否会接受新产品也是个大问题。 – Robert O’Callahan

还有一部分开发者对此保持审慎态度……不过他们似乎都对微软的闭门NDA(不泄密协议)讨论表示不信任。

考虑到IE7/Vista的装机量依旧很低,导致微软不得不考虑将其列为“重要更新”以提高安装率,IE8的将来不甚光明。如何维持市场占有率是微软的首要问题,Version Targeting放在IE7也许有效,留待IE8则是为时已晚。站在局域网开发者的角度来说,假若IE8不支持IE6的渲染模式,那它对兼容也没什么好处。因此我非常怀疑VT的可行性,如果它不幸带来更多混乱,或是干脆被延迟到IE9,我都不会惊讶。

新的标准化战争在IE8还没有展露头角时就开始了。不同于以往的是,唇枪舌战将不局限在微软身上。WaSP领导与成员间急需的交流以及其他浏览器开发团队希望在IE8时代来临前打破垄断的野望,都给标准化带来不安的因素

完。

越简洁的设计,背后也越复杂。

上网冲浪也许是个过时的词,但这个概念却远没到过时的那一天。

RSSAtom打造的世界或许已经被吹得很响,但现实是我们仍在为哪个浏览器更标准而争吵。

AJAX大概也不是什么新鲜的水果,但和当年Flash开始流行的“Flash建站一窝蜂”相比,AJAX的巨浪也毫不逊色。

侃这些都是为了说明:网页的价值还没有低于Web Feeds。至少在商业需求量上网站制作依旧高居不下。距离主流观点/习惯的改变还有漫漫长路要走。在那天到来之前,我们的鼠标依旧需要在地址栏,收藏夹(标签栏,或者任意类似的东西)和连接三点之间移动。你说网络变化飞快吧,那今天距离各位上次用Telnet聊天的时间有多久了?

不过价值问题不是今天的主题,所以抛开Feeds,说回网页制作。

↓继续↓

Continue reading “越简洁的设计,背后也越复杂。”

信念倒塌的三部曲

如果让你重新选择人生,你还会选择现在的职业么?

老生常谈的记者提问了。

对于公众人物,回答了或许多少还有点“八卦”的意义。对于普通人来说,这几乎是个答了也白搭的问题。

但对于我来说,答案的改变,是一次信念的倒塌,而重建遥遥无期。

若两个月前你问我类似的问题?那时的我大概能在3ms的时间内回答“是的”。

而现在,我还剩下什么资本来做同样的宣言?

↓继续↓

Continue reading “信念倒塌的三部曲”

浏览器标准的重要性

兼容与完美,在网络的领域里是不能共存的;至少,没有两全其美的时候。

说话DF我为了通过W3C对于Xhtml和CSS所设定的标准检查,千辛万苦的把那些顽固不化的Wordpress插件整理了一遍。

终于在06年1月23日23时得到了神的爱护……xhtml transitional valid and css (profile 2) valid

然而在06年1月24日0时我发现神的爱护是有代价的:

width: 300px;
/* ie5win fudge begins */
voice-family: "\"}\"";
voice-family:inherit;
width: 270px;
}

不知道是谁想出了这种“办法”,用定义两次Width的方式解决了兼容问题。

IE5并不能正确读取voice-family: “\”}\””; voice-family:inherit;这两段,所以在读取第二个Width前就放弃读取#content了。从而它的Width是300px;反之,由于IE6支持voice-family: “\”}\””;voice-family:inherit;因此第二个Width值就会覆盖第一个Width值,最终得出Width=270px。这样便能在同一个Class里定义两个Width值。

(而实际上这是重复定义的典型,不过并不会在其他浏览器产生问题。)

2。同时支持Firefox和IE。

!important是CSS1中就有的定义语句,用以提升某个CSS值的优先级。

例如

background:url('1.png') !important;
background: transparent;
filter: progid: DXImageTransform.Microsoft.AlphaImageLoader(src='1.png', sizingMethod='scale');
height: 128px;
width: 128px;

这也是重复定义的运用,由于IE并不支持!important,所以第二条background的值就会覆盖第一条的值,并用AlphaImageLoader读取图片1.png。而其他核心的浏览器支持!important,background值不会被覆盖,所以也正常显示图片。

(真正引起错误的是progid: DXImageTransform.Microsoft.AlphaImageLoaderCSS的正规定义里没有他们,实际上,Filter和网页过渡一样,本来就是IE自身的CSS。)

没有办法,硬着头皮改吧。

总结:兼容,理所当然;然而权衡利弊,为了今后网络服务的快速发展,IE你也是时候反省一下自己了,别老要我们用户出力啊。

附,延伸阅读:

1。PNG 文件在 Internet Explorer 6.0 中不显示为透明
2。Windows Explorer vs. the Standards(英文)
3。Understanding and Solving Internet Explorer Leak Patterns(英文