当前位置: 代码迷 >> Web前端 >> 辨别浏览器呈现引擎
  详细解决方案

辨别浏览器呈现引擎

热度:133   发布时间:2012-08-02 11:35:26.0
识别浏览器呈现引擎

?

好久没有写很深入的文章了。

这天看到别人写的文章,突发灵感,准备写写关于浏览器呈现引擎的文章

写的好,大家要顶起哦

?

识别浏览器呈现引擎

什么是呈现引擎,网上可以查到专业词汇,我这里就不说明了。

现在主流的呈现引擎有五大种: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);
}
?

?

写的不好,大家不好说哦

哈哈

  相关解决方案