KISSY源码阅读——ua

ua模块,在大部分的框架/库中代表的是浏览器判断的模块。

关于浏览器判断,
基本上都是依赖对userAgent中的标识进行识别来区分浏览器的。
看到过部分框架/库采用特征嗅探来判断,个人觉得比较不靠谱。
你不能因为A浏览器借鉴了B浏览器的某个方法或者属性就把A识别成了B对吧?
而且就目的因素来说,特征嗅探是针对功能的,而ua判断是针对浏览器标识的。
如果是为了检测功能/属性是否可用而调用ua判断浏览器,逻辑上也不合理吧。
这之间还是有差别的,可以取语意来理解。

所以个人认为,如果你需要依靠浏览器判断来使用浏览器的特征方法,那么是你显然还不了解高级js编程的基本概念;如果你使用特征嗅探来判断浏览器类别,那么你显然使用错方法了。

BTW:个人觉得ua判断的技术含量更多的是体现在代码之外的。

 

然后还是要说说KISSY的ua模块。

我们知道IE8+浏览器有兼容模式,所以有些判断不一定显得准确。在kissy源码中有点解释:

/* UA.ie && UA.ie < 8 并不意味着浏览器就不是 IE8, 有可能是 IE8 的兼容模式。进一步的判断需要使用 documentMode. */ 

另外在ua-extra模块中,增加了对国产浏览器外壳的判断。不过由于各种原因,显然版本判断很不完善。加上毕竟都不是什么独立的全新的内核,可能会觉得没必要、无所谓。
但考虑到国产浏览器会在其上增加一些所谓用户会喜欢的东西来找开发者的麻烦。所以这种尝试还是蛮有必要的。
具体的事件,可以在http://www.panghufei.com/上搜“向搜狗浏览器项目组学习”这篇文章。

文件下载:kissy-ua.js

posted on 2010-09-25 10:49  Akecn  阅读(921)  评论(5编辑  收藏  举报