识别浏览器呈现引擎
?
好久没有写很深入的文章了。
这天看到别人写的文章,突发灵感,准备写写关于浏览器呈现引擎的文章
写的好,大家要顶起哦
?
识别浏览器呈现引擎
什么是呈现引擎,网上可以查到专业词汇,我这里就不说明了。
现在主流的呈现引擎有五大种: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);}?
?
写的不好,大家不好说哦
哈哈