好久没有写很深入的文章了。
这天看到别人写的文章,突发灵感,准备写写关于浏览器呈现引擎的文章
写的好,大家要顶起哦
识别浏览器呈现引擎
什么是呈现引擎,网上可以查到专业词汇,我这里就不说明了。
现在主流的呈现引擎有五大种:IE,Gecko,Webkit,KHTML和Opera
不同的呈现引擎,对同一段html会有不同的效果,怎么识别他们就成了跨平台的
必须解决的问题。
识别以上的引擎主要方法,都是通过解析用户代理字符串来实现鉴别和判断的
先拿最麻烦的Opera来说。
要识别Opera,就必须的检测window.opera对象。Opera 5及更高的版本中都有这样的对象,
以保持与浏览器相关的标识信息以及与浏览器直接交互。在Opera 7.6及更高版本中,调用
version()方法可以返回一个表示浏览器版本的字符串,而这样也是获得Opera版本好的最佳方式
说以我们可以这样操作
if(window.opera){ engin.ver = window.opera.version(); engin.opera = parseFloat(engin.ver); }
好了。搞定Opera
下面说说Webkit,对于怎么判断他最简单的方法就是判断独一无二的AppleWebkit,具体的
var ua = navigator.userAgent; if(/AppleWebkit\/(\+S)/.test(ua)){ engin.ver = RegExp["$1"]; engin.webkit = parseFloat(engin.ver); }
对于KHTML来说,和webkit差不多,但在早期的时候KHTML是用KHTML来判断的,以后是用Konqueror
进行处理的
var ua = navigator.userAgent; if(/KHTML\/(\S+)/.test(ua) || /Konqueror\/([^;]+)/.test(ua){ engin.ver = RegExp["$1"]; engin.khtml = parseFloat(engin.ver); }
同理下去:
Gecko也是如此
var ua = navigator.userAgent;
if(/rv:\/([^\]+) /Gecko\/\d{8}/.test(ua)){
engin.ver = RegExp["$1"];
engin.gecko = parseFloat(engin.ver);
}
下面处理IE
对于IE来说,IE的版本号位于字符串MSIE的后面,一个分好的前面因此相应的正则表达式
就非常的简单了
如下:
var ua = navigator.userAgent; if(/MSIE ([^;]+)/.test(ua)){ engin.ver = RegExp["$1"]; engin.gecko = parseFloat(engin.ver); }
写的不好,大家不好说哦
哈哈