Browser Test VS. Object Detection

广为使用的浏览器测试实际上是一种很不好的脚本编写方式——Peter-Paul Koch 告诉我们

所谓“浏览器测试”,是指在 JavaScript 脚本中通过 navigator.userAgent 来判断当前用户使用的是什么浏览器,并根据这个浏览器能够支持的情况提供相应的功能。乍一看似乎没有什么不妥,但 Peter 给出了为什么永远不要使用浏览器测试的原因:

  1. 它很有可能忽略了你没有注意到的浏览器,比如新出现的,或者特别罕见的。
  2. userAgent 这个属性在浏览器里多数是可以修改的,用户可能会把它定制为一些其他的。
  3. 有些浏览器,只有在特定平台下支持某种属性,或者只在特定平台下不支持,这些情况浏览器测试都不好用。

那么检测 JavaScript 的版本如何呢?也不行,因为许多浏览器对同一个版本的支持是不一致的,比如 Netscape 4 和 IE 4 都声称支持 JavaScript 1.2,但你真的相信他们支持的是同一个 1.2 么?

对象检测才是正确的方法。要知道一个浏览器是否支持 document.images 对象,只需要:if (document.images) 即可。而要知道 window 对象是否支持 focus() 函数,if (window.focus) 就可以判断了,但千万不要写成 if (window.focus()) 哦,那可是调用那个函数了。

Peter 还给出了其他的一些判断规则。

  • 如何判断是否支持 DHTML?if (document.getElementById || document.all || document.layers)
  • 如何判断是否支持 W3C DOM?if (document.getElementById && document.createElement)

另外,Peter 的网站 QuirksMode.org 实在是一个学习 JavaScript 和 DOM 的绝佳站点,如果你希望学习 DOM/脚本编程,建议从那里起步。

XHTML Sliding Tools

Eric Meyer 设计的 XHTML 幻灯片制作套件: S5 已经进入了 Final Candidate

这是 Eric 新近设计的一套用 XHTML 书写内容,用 CSS 控制外观,通过 DOM 脚本控制页面的切换与步进等功能的,完全符合 Web 标准的幻灯片设计工具。尽管先前有许多设计师们 (比如在新近召开的 WE04,我们就看到了 Doug Bowman 和 Dave Shea 的 presentation) 都做过类似的尝试,但通常他们只为了在一个浏览器下使用,也往往有一些亲和力的问题。

Eric 的这次尝试,就是希望能将它较好的用于各个浏览器上,包括 Mozilla、IE、Opera,同时保证与标准良好的结合及不妨碍亲和力。

最近与之类似的东东,还有这个,也可以看看。

sFIR 2.0

就要发布了。采用方便的 Flash 文本替换方式,真正革命性地扩展了字体的使用范围。

全部操作仅仅是:

  1. 打开 sfir.fla,选择一个字体,在 Flash 中导出。(或者使用别人已经导出好的字体)
  2. 在 HTML 的 head 中加入 sfir.js 的调用。
  3. 在 HTML 的 body 的末尾加入相关的 replace 语句。
  4. 在 CSS 中配合地加入几条规则。

你就可以看到 Web4C 首页的这种效果了。还有这里有 Mike 的示例文件

唯一的遗憾是不支持中文,估计是 ActionScript 对东亚语言支持的问题,这方便我也不懂,还请有经验的朋友指点。

sFIR 2.0, RC1.