techdoc centre
本站搜索 用户名: 密码:
   HOME  TECHDOC  WEB  SDK  NSDT  TOPIC  BIZDOC   LOGIN
  发布地区 Global 发布类别 NSDT Javascript
  javascript判断浏览器类型与版本
于 2017-08-18 编辑: Eric 查看: 914 次   Article Url Print this page

要想写出跨浏览器的javascript,就必须懂得嗅探技术。这是浏览器大战遗留下的大地雷,事已如此,只好认命,乖乖写分支结构吧,函数就是这样不知不觉中变长的。

先看单一浏览器的判断,我们没有必须去找navigator.userAgent的麻烦,我在国外的博客网站收集了如下hack,短小精悍:



ie = !+"\v1" ;

ie ='\v'=='v' ;

ie = 0//@cc_on+1;

ie = !!top.execScript;

ie = /*@cc_on!@*/!1;

ie8 = !!window.XDomainRequest;



//我自创的,如果是IE,会返回6,7,8代表ie6,ie7,ie8,否则返回1

IEVersion = (" " + (/*@cc_on @_jscript_version @*/-1)).slice(-1)



//基于条件编译的嗅探脚本,还有如下几个:

IE8=@cc_on @_jscript_version == 5.8 ? true : @false

IE7=@cc_on @_jscript_version == 5.7 ? true : @false

IE6=@cc_on @_jscript_version == 5.6 ? true : @false

IE55=@cc_on @_jscript_version == 5.5 ? true : @false





ff = /a/[-1]=='a';

ff3 = (function x(){})[-5]=='x';

ff2 = (function x(){})[-6]=='x';



safari=/a/.__proto__=='//';

safari = window.openDatabase;



chrome=/source/.test((/a/.toString+''));



opera=!!window.opera ;

opera=/^function (/.test([].sort);

还有判断maxthon的:



//出处:http://www.cnblogs.com/xiarugu/archive/2009/02/02/1382293.html

function IsMaxthon()

{

try{

window.external.max_invoke("GetHotKey");

return true;

}catch(ex){

return false;

}

}

alert(IsMaxthon());


//出处:http://bbs.maxthon.cn/archiver/?tid-148353.html

try{

if(external.max_version.indexOf("1.")==0){

var isMaxthon1 = 1;

}else{

var isMaxthon1 = 0;

}

}catch(e){

var isMaxthon1 = 0;

}

如果是想搞比较复杂的UI或者类库,对于浏览器的判断就要更严格一些,不能像上面那样游兵散勇。



B=(function x(){})[-5]=='x'?'FF3':(function x(){})[-6]=='x'?'FF2':/a/[-1]=='a'?'FF':'\v'=='v'?'IE':/a/.__proto__=='//'?'Saf':/s/.test(/a/.toString)?'Chr':/^function \(/.test([].sort)?'Op':'Unknown'

在Ext3的源码中能找出如下现整的嗅探脚本:



ua = navigator.userAgent.toLowerCase(),

check = function(r){

return r.test(ua);

},

isOpera = check(/opera/),

isChrome = check(/chrome/),

isWebKit = check(/webkit/),

isSafari = !isChrome && check(/safari/),

isSafari2 = isSafari && check(/applewebkit\/4/), // unique to Safari 2

isSafari3 = isSafari && check(/version\/3/),

isSafari4 = isSafari && check(/version\/4/),

isIE = !isOpera && check(/msie/),

isIE7 = isIE && check(/msie 7/),

isIE8 = isIE && check(/msie 8/),

isIE6 = isIE && !isIE7 && !isIE8,

isGecko = !isWebKit && check(/gecko/),

isGecko2 = isGecko && check(/rv:1\.8/),

isGecko3 = isGecko && check(/rv:1\.9/),

好了,基本就是这样了,如果你有什么发现,也敬请拿出来分享一下!
网址: 相关网址


相关文章:

o Using Javascript to POST data between pages
o JavaScript 获取客户端计算机硬件及系统信息
o JavaScript使用技巧精萃
o 检查浏览器是否支持javascript和cookie
o js校验输入内容
o 动态增大,减小TEXTAREA框的高度
o JS验证中文长度
o 一个注册页面检查代码-JAVASCRIPT
o 使用PHP+javascript检查用户名是否存在
o Javascript中最常用的55个经典技巧


   Search:

   

   Categories:

 Open All Close


Copyright techdoc.netsoftlab.ca powered by netsoft lab. 2007-2012  
Friend Websites:   netsoftlab.ca   cnstar.ca   CS lessions