javascript判断浏览器和终端类型,js如何区分手机、电脑终端和浏览器

判断浏览器类型 复制代码代码如下:

 if ( window.sidebar && "object" == typeof( window.sidebar ) && "function" == typeof( window.sidebar.addPanel ) ) //  firefox
{
}
else if ( document.all && "object" == typeof( window.external ) )   //  ie
{
}
js用来区别IE与其他浏览器及IE6-8之间的方法。1、document.all2、!!window.ActiveXObject;使用方法如下:if (document.all){alert(”IE浏览器”);}else{alert(”非IE浏览器”);}if (!!window.ActiveXObject){alert(”IE浏览器”);}else{alert(”非IE浏览器”);}下面是区别IE6、IE7、IE8之间的方法:var isIE=!!window.ActiveXObject;var isIE6=isIE&&!window.XMLHttpRequest;var isIE8=isIE&&!!document.documentMode;var isIE7=isIE&&!isIE6&&!isIE8;if (isIE){if (isIE6){alert(”ie6″);}else if (isIE8){alert(”ie8″);}else if (isIE7){alert(”ie7″);}}首先我们确保这个浏览器为IE的情况下,进行了在一次的检测,如果你对此有怀疑,可以测试一下。我这里就直接使用在判断中了,你也可以将他们先进行声明成变量进行使用。据说火狐以后也会加入document.all这个方法,所以建议使用第二种方法,应该会安全一些。用navigator.userAgent.indexOf()来区分多浏览器,代码示例如下:复制代码代码如下:
<coding-1 lang="other">
<script type="text/javascript">
var browser={ 
versions:function(){ 
var u = navigator.userAgent, app = navigator.appVersion; 
return { 
trident: u.indexOf('Trident') > -1, //IE内核 
presto: u.indexOf('Presto') > -1, //opera内核 
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 
mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端 
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器 
iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器 
iPad: u.indexOf('iPad') > -1, //是否iPad 
webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部 
};
}()
}

document.writeln(" 是否为移动终端: "+browser.versions.mobile);
document.writeln(" ios终端: "+browser.versions.ios);
document.writeln(" android终端: "+browser.versions.android);
document.writeln(" 是否为iPhone: "+browser.versions.iPhone);
document.writeln(" 是否iPad: "+browser.versions.iPad);
document.writeln(navigator.userAgent); 
</script>
</coding> 
JavaScript不管是判断PC浏览器还是手机浏览器,都是通过User Agent 来判断。
转自:http://www.cnblogs.com/yuzhongwusan/archive/2012/09/03/2669022.html
 
 
 
 

判断原理:

JavaScript是前端开发的主要语言,我们可以通过 编写JavaScript程序来判断浏览器的类型及版本。JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另 一种是通过分析浏览器的userAgent属性来判断的。在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的 版本一般只能通过分析浏览器的userAgent才能知道。

 

浏览器类型

⑴浏览器特有属性

⑵根据userAgent

浏览器版本

⑴根据userAgent

 

对于手机浏览器判断

1.如何判断是否为移动终端 利用正则match

匹配navigator.userAgent是否含有字符串AppleWebKit*****Mobile

安卓qq浏览器HD版 只有AppleWebKit

2手机语言版本的判断

使用navigator.browserLanguage 便可得出windows phone语言版本,  当然可恶的小小手机语言版本也有兼容性的差异,兼容Mozilla,以及AppleWebKit内核的浏览器访问其语言版本,它会列出 navigator.language

<script type="text/javascript">
/*
* 智能机浏览器版本信息:
*
*/
  var browser={
    versions:function(){
           var u = navigator.userAgent, app = navigator.appVersion;
           return {//移动终端浏览器版本信息
                trident: u.indexOf('Trident') > -1, //IE内核
                presto: u.indexOf('Presto') > -1, //opera内核
                webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端
                ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
                iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器
                iPad: u.indexOf('iPad') > -1, //是否iPad
                webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
            };
         }(),
         language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
document.writeln("语言版本: "+browser.language);
document.writeln(" 是否为移动终端: "+browser.versions.mobile);
document.writeln(" ios终端: "+browser.versions.ios);
document.writeln(" android终端: "+browser.versions.android);
document.writeln(" 是否为iPhone: "+browser.versions.iPhone);
document.writeln(" 是否iPad: "+browser.versions.iPad);
document.writeln(navigator.userAgent);
 
</script>

比较特别的地方

UC浏览器没有安卓报头,只返回:linux ,这里粗略的根据linux来判断是安卓(前提必须满足是移动终端,UC这点是满足的)

安卓QQ浏览器HD版检测的结果是:mac, Safari,这个很是变态,自己看着处理吧

3个检测浏览器User-Agent信息的网站


三个在线网站,通过手机浏览器就可以在线检测,很是方便

1. http://whatsmyuseragent.com/

2. http://whatsmyua.com/

3. http://www.useragentstring.com/

 参考文章:

Pc浏览器

http://www.jb51.net/article/17302.htm

http://www.bairuiw.com/front-end-skill/1346.html

手机浏览器

http://www.iundefined.com/development/344.html

http://www.cnblogs.com/dowinning/archive/2011/07/22/2113747.html

http://www.cnblogs.com/dowinning/archive/2011/07/22/2113981.html

http://luckerme.com/archives/1015.html

原文:

http://www.cnblogs.com/phphuaibei/archive/2011/12/09/2282570.html

如何判断是手机还是电脑在访问网站? 网上现在有三种观点, 一种是基于浏览器发送的 User-Agent, 但明显这种方法是行不通的, 虽然有人列 出了大多数的手机发送的User-Agent, 但依然会有很多手机无法识别, 甚至有些手机浏览器不发送 User-Agent, 而且也不能保证以后就不会出新牌子. 下面是一个php的例子, 看过之后你就会知道有多么不可靠.

1. function is_wap(){ 2. $ua = strtolower($_SERVER['HTTP_USER_AGENT']); 3. $uachar = "/(nokia|sony|ericsson|mot|samsung|sgh|lg|sie|philips|panasonic|alcatel| lenovo|cldc|midp|wap|mobile)/i"; 4. if(($ua == '' || preg_match($uachar, $ua))&& !strpos(strtolower($_SERVER ['REQUEST_URI']),'wap')){ 5. return true; 6. }else{ 7. return false; 8. } 9. }

另外一种是判断HTTP_ACCEPT, 这种应该相对可靠一点, 不过HTTP_ACCEPT是非常复杂的, 如果一般的不 支持html的浏览器还好说, 你只要判断浏览器支持wml并且不支持html就可以, 但如果浏览器同时支持 wml和html那就难办了, 低端手机可能会将wml放到html的前面, 但是很多高端手机或者智能手机对html 的支持很好, 所以html也会出现在wml前面. 这是黑莓手机发送的HTTP_ACCEPT

application/vnd.rim.html, text/html, application/vnd.wap.xhtml+xml, text/vnd.sun.j2me.app-descriptor, image/vnd.rim.png,image/jpeg, application/x-vnd.rim.pme.b, application/vnd.rim.ucs, image/gif;anim=1, application/vnd.rim.jscriptc;v=0-8-8, application/x-javascript, application/vnd.rim.css;v=1, text/css;media=handheld, application/vnd.wap.wmlc;q=0.9, application/vnd.wap.wmlscriptc;q=0.7, text/vnd.wap.wml;q=0.7, */*;q=0.5 夸张吧? 不过的确是很标准的, 开发人员可以根据这个得到很多信息, 但很多手机都没这么标准的, 如 果你查看IE或者FF的HTTP_ACCEPT你会发现它很短. text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8 同样, 给你个php的例子. if (isset($_SERVER['HTTP_ACCEPT']) && (strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==FALSE) && (strpos($_SERVER['HTTP_ACCEPT'],'text/html')===FALSE || (strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'],'text/html')) )) {//手机访问 readfile('index.wml'); } else readfile('index.htm');

原理:如果浏览器支持WML、而且[不支持HTML]或[WML优先于HTML],则判定为手机。但实际上这个原理 是不正确的. 还有一种是说判断网关或者IP什么的, 但我个人认为这个很不可靠, 手机的联网方式很多, 比如我开发 的时候就是用模拟器的.这个应该不用什么例子了, REMOTE_ADDR 就足够了. 以上是我今天上午的工作成果, 但实际上还是没有找到完美的解决方案, 先写这么多, 有问题请补充或 者发送消息给我, 如果你有更好的办法希望可以分享给我, 谢谢. 以上来自:http://zhidao.baidu.com/question/70781857.html 

最近做一个手机查询系统,自然就牵扯到了此问题,那我就根据对wap的认识浅谈下通过php判断用户访 问方式是通过wap访问还是电脑直接访问。 首先说最根本的解决方法: 手 机访问时,会附带发送user-agent信息,这个信息里面会有手机号码信息,那么如果能取得手机号码 ,则可以肯定是通过手机wap访问的。但是目前中 国移动已经屏蔽了user-agent信息,所以获取不到手 机号码。有关系的朋友可以联系移动公司,把wap网站服务器的ip提交给中国移动,加入白名单 后即可 取得ua信息。目前中国联通可以直接取到手机号,对联通用户此方案可完美实施。 接下来说我的解决方案: 手机访问,原理是手机通过移动公司的代理服务器进行的访问。那么我们就可以理解是一台普通电脑使 用了代理服务器。当手机通过代理服务器访问的时候,http头信息会毫无疑问的包含一个信息:via。这 个信息提供了有价值的判断信息。 例如河南移动取得的via信息是: http/1.1 hazz-b-gw001-wap(infox-wisg, huawei technologies) 河南联通的via信息是: zxwap gateway,zte technologies 其他各省的http头信息和这个大同小异,判断是否手机访问的方案就出来 了:获取http的via信息字符 串看是否包含wap字符,如果有则是通过手机访问。这样做的结果是没有人能伪造手机访问,判断绝对准 确。自然,这样对于 网上流行的手机wap模拟器也做了屏蔽—-从根本上屏蔽。 操作代码也很简单: // check if wap by xhat function check_wap() { return stristr($_SERVER['HTTP_VIA'],"wap") ? true : false; } // check over 从我查阅的资料来看,目前此方法应该是迄今互联网上准确率最高、最简单的判断手机访问方法。 以上的方法可以实现判断访问来源是手机还是电脑,但有一个问题就是,只能通过手机才能访问,支持 WAP的浏览器和手机模拟器也不能访问,这给测试带来了麻烦,也有点限制死了。 下面的方案是: 通过判断浏览器代理标识符,判断是否是支持WAP的浏览器来决定访问页面。这有一个缺点就是不可能全 部的列出所有手机的浏览器标识符与所支持的浏览器标识符。 下面看看实现的代码: function check_wap()  { if (strpos(strtoupper($_SERVER['HTTP_ACCEPT']),"VND.WAP.WML") > 0) { // Check whether the browser/gateway says it accepts WML. $br = "WML"; } else  { $browser=substr(trim($_SERVER['HTTP_USER_AGENT']),0,4); if ($browser=="Noki" || // Nokia phones and emulators $browser=="Eric" || // Ericsson WAP phones and emulators $browser=="WapI" || // Ericsson WapIDE 2.0 $browser=="MC21" || // Ericsson MC218 $browser=="AUR" || // Ericsson R320 $browser=="R380" || // Ericsson R380 $browser=="UP.B" || // UP.Browser $browser=="WinW" || // WinWAP browser $browser=="UPG1" || // UP.SDK 4.0 $browser=="upsi" || // another kind of UP.Browser ?? $browser=="QWAP" || // unknown QWAPPER browser $browser=="Jigs" || // unknown JigSaw browser $browser=="Java" || // unknown Java based browser $browser=="Alca" || // unknown Alcatel-BE3 browser (UP based?) $browser=="MITS" || // unknown Mitsubishi browser $browser=="MOT-" || // unknown browser (UP based?) $browser=="My S" ||// unknown Ericsson devkit browser ? $browser=="WAPJ" || // Virtual WAPJAG www.wapjag.de $browser=="fetc" || // fetchpage.cgi Perl script from www.wapcab.de $browser=="ALAV" || // yet another unknown UP based browser ? $browser=="Wapa" || // another unknown browser (Web based "Wapalyzer"?) $browser=="Oper") // Opera  { $br = "WML"; } else  { $br = "HTML"; } } if($br == "WML")  { return TRUE; } else  { return FALSE; }  }  if(!check_wap()) { Header("Location: http://www.chongwen.com/info/story.html");  exit(); } //平台、设备和操作系统 var system ={ win : false, mac : false, xll : false }; //检测平台 var p = navigator.platform; system.win = p.indexOf("Win") == 0; system.mac = p.indexOf("Mac") == 0; system.x11 = (p == "X11") || (p.indexOf("Linux") == 0); //跳转语句 if(system.win||system.mac||system.xll){ }else{ window.location.href="android.aspx"; } ASP判断ip是否手机访问网站 ===================================== 程序代码  <% if InStr(LCase(Request.ServerVariables("HTTP_ACCEPT")),"text/vnd.wap.wml")>0 then response.redirect  "wap.asp" '如果是手机访问则跳转到wap.asp response.end else response.redirect  "default.asp" '如果电脑访问跳转到首页 response.end  end if %> 我自己是在default.asp 添加 复制内容到剪贴板 程序代码 <% if InStr(LCase(Request.ServerVariables("HTTP_ACCEPT")),"text/vnd.wap.wml")>0 then response.redirect  "wap.asp" response.end end if %>

这样只要输入www.51weidi.com就可以自动判断是否是手机访问。而跳转到对应页面了。。  ================================== PHP判断用户是否用手机访问网站  老九是一个忠实的手机党,经常用手机上网,也用手机访问过我的博客,不过我的博客没有开发过wap版 的,大概老九的手机浏览器比较先进吧,我用我的手机访问时总是提示页面太大(三年前买的手机,估计 过时了吧)。   我一直在想,PHP应该能判断用户是否用手机访问网站吧,记得早些年,在QQ空间的留言板上还出现 了该留言来自于手机的提示呢,虽然QQ空间不是用PHP开发的。于是,今天来网络上搜索了一番。找到了 一个貌似还可以的方法。参考地址: php如何判断用户通过手机wap访问还是电脑直接访问   手机需通过代理服务器来访问网站,http头信息里一般会包含一个VIA的信息,不太懂具体是什么含 义,大概都是通信用的。于是我建了一个脚本测试下,<?php echo $_SERVER['HTTP_VIA'] ?>,用火狐 ,IE打开什么也没有。上传到网上,用我的手机访问了一下,有如下信息:HTTP/1.1 ZJHZ-PS-WAP3- GW305(infox-WISG, Huawei Technologies)。那就按照参考文章的说法,如果获取到了HTTP头信息中的 VIA并且含WAP,说明是手机访问。当然对那些头信息里没有发送VIA的手机就无效了。   这样就写了一个函数来封装一下,以方便使用。代码如下: /*  * 功能:               判断是否是手机访问  * 参数:               无  * 返回值:             返回1为是手机访问,返回0时为不是  */ function is_wap() {     $http_via = isset($_SERVER['HTTP_VIA']) ? strtolower($_SERVER['HTTP_VIA']) : '';     return !empty($http_via) && strstr($http_via, 'wap') ? 1 : 0;        }   题外话:近几日,夜里睡觉时一直对着电扇吹,一天早上起来觉得上肢肌肉酸痛,感觉手足心发热 ,打了三次点滴,吃了五种药体温才恢复正常,又一次理解了身体可是革命的根本呀。在此,也提醒各 位童鞋要多多注意身体了。 =================== JS如何判断来访问网站的用户是手机用户还是Web浏览器的用户 使用JS架框有现成的判断  例如motools架框中: Browser.Platform.mac - (boolean) 当前操作系统是否为Mac Browser.Platform.win - (boolean) 当前操作系统是否为Windows Browser.Platform.linux - (boolean) 当前操作系统是否为Linux Browser.Platform.ipod - (boolean) 当前操作系统是否为iPod Touch / iPhone Browser.Platform.other - (boolean) 当前操作系统即不是Mac, 也不是Windows或Linux Browser.Platform.name - (string) 当前操作系统的名称  这个只能通过客户端传递的User-agent来判 断 比如正常pc是:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1;) 常用手机的UserAgent你可以去网上找找,或者自己连手机测试, 比如Nokia5320的是:Nokia 5320/UCWEB7.0.1.34/28/999 HTC的安卓手机:Mozilla/5.0 (Linux; U; Android 2.2; zh-cn; HTC Desire Build/FRF91)  AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1; iPhone的:Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; zh-cn)  AppleWebKit/528.18 (KHTML, like Gecko) Mobile/7D11  asp.net 或JSP 判断是手机还是电脑访问网 站的可靠方法 做了WAP网站,用到判断用户来自PC还是手机,想了很多方法,如判断IP,判断分辨率等,但经 过试验,都不太可靠,最终采用了通过获得http头信息的方法来判断,此方法可靠性最高.详细代码如 下:asp.net [code]if (Request.Headers["user-agent"] != null && Request.Headers["user- agent"].ToLower().ToString().IndexOf("mozilla") != -1)             Response.Redirect("www/index.aspx");         else             Response.Redirect("wap/index.aspx");JSP [code] if(request.getheader("user-agent")!=null&&(request.getheader("user-agent").tolowercase ().indexof("mozilla")!=-1))  {  strfinishurl = "/web/index.jsp";  }else  {  strfinishurl = "/wap/index.jsp";  }     asp.net(C#) 中用以下代码 using System.Text.RegularExpressions;//头部引入正则的命名空间 //为了加强准确性,防止支持wap的浏览器如opera,加入操作系统验证。openwave|后为pc操作系统 string osPat = "mozilla|m3gate|winwap|openwave|Windows NT|Windows 3.1|95|Blackcomb|98|ME|X  Window|Longhorn|ubuntu|AIX|Linux|AmigaOS|BEOS|HP-UX|OpenBSD|FreeBSD|NetBSD|OS/2|OSF1|SUN"; string uAgent = Request.ServerVariables["HTTP_USER_AGENT"]; Regex reg = new Regex(osPat); if (reg.IsMatch(uAgent)) { Response.Write("电脑访问"); } else { Response.Write("手机访问"); } Response.Write("<br/>" + uAgent); _________________________________________________________________________________ PHP中用以下代码: $uAgent = $_SERVER['HTTP_USER_AGENT']; $osPat  = "mozilla|m3gate|winwap|openwave|Windows NT|Windows 3.1|95|Blackcomb|98|ME|X  Window|ubuntu|Longhorn|AIX|Linux|AmigaOS|BEOS|HP-UX|OpenBSD|FreeBSD|NetBSD|OS\/2|OSF1|SUN"; if(preg_match("/($osPat)/i",  $uAgent )) //winwap 模拟WAP手机上网的一个浏览器; openwave|后 面为各pc操作系统 { echo "电脑访问"; } else { echo "手机访问"; } echo '<br/>'.$uAgent; _______________________________________________________________________________ javascript中采用navigator.userAgent 来获取,但非智能机似乎不支持js。 function detectOS(){       var sUserAgent = navigator.userAgent;      var isWin =  (navigator.platform == "Win32") || (navigator.platform == "Windows");                                                                              var isMac = (navigator.platform ==  "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh");       if(isMac) return "Mac";      var isUnix = (navigator.platform == "X11") && !isWin && !isMac;      if(isUnix) return "Unix";      var isLinux = (String(navigator.platform).indexOf ("Linux") > -1);      if(isLinux) return "Linux";      if(isWin)      {           var isWin2K =  sUserAgent.indexOf("Windows NT 5.0") > -1 || sUserAgent.indexOf("Windows 2000") > -1;           if(isWin2K) return "Win2000";          var isWinXP = sUserAgent.indexOf("Windows NT 5.1")  > -1 || sUserAgent.indexOf("Windows XP") > -1;          if(isWinXP) return "WinXP";           var isWin2003 = sUserAgent.indexOf("Windows NT 5.2") > -1 || sUserAgent.indexOf("Windows  2003") > -1;          if(isWin2003) return "Win2003";      }       return "None";  } alert (detectOS())

http://blog.okbase.net/haobao/archive/1262.html

我们可以通过userAgent来判断,比如检测某些关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWebKit关键字,可能会是Linux,UCBrowser等等。 1. Javascript

2. PHP

3. .NET (C#)

下面是Javascript代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<script type= "text/javascript" >
/*
* 智能机浏览器版本信息:
*/
var browser={
versions:function(){
var u = navigator.userAgent, app = navigator.appVersion;
return {//移动终端浏览器版本信息
trident: u.indexOf('Trident') > -1, //IE内核
presto: u.indexOf('Presto') > -1, //opera内核
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/ )||!!u.match(/AppleWebKit/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf( 'Android' ) > - 1 || u.indexOf( 'Linux' ) > - 1 , //android终端或者uc浏览器
iPhone: u.indexOf( 'iPhone' ) > - 1 || u.indexOf( 'Mac' ) > - 1 , //是否为iPhone或者QQ HD浏览器
iPad: u.indexOf( 'iPad' ) > - 1 , //是否iPad
webApp: u.indexOf( 'Safari' ) == - 1 //是否web应该程序,没有头部与底部
};
}(),
language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
 
document.writeln( "语言版本: " +browser.language);
document.writeln( " 是否为移动终端: " +browser.versions.mobile);
document.writeln( " ios终端: " +browser.versions.ios);
document.writeln( " android终端: " +browser.versions.android);
document.writeln( " 是否为iPhone: " +browser.versions.iPhone);
document.writeln( " 是否iPad: " +browser.versions.iPad);
document.writeln(navigator.userAgent);
</script>

下面是通过检测关键字判断是不是手机在访问的PHP代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
/**
* 判断是否是通过手机访问
* @return bool 是否是移动设备
*/
public function isMobile() {
//判断手机发送的客户端标志
if (isset( $_SERVER [ 'HTTP_USER_AGENT' ])) {
$userAgent = strtolower ( $_SERVER [ 'HTTP_USER_AGENT' ]);
$clientkeywords = array (
'nokia' , 'sony' , 'ericsson' , 'mot' , 'samsung' , 'htc' , 'sgh' , 'lg' , 'sharp' , 'sie-'
, 'philips' , 'panasonic' , 'alcatel' , 'lenovo' , 'iphone' , 'ipod' , 'blackberry' , 'meizu' ,
'android' , 'netfront' , 'symbian' , 'ucweb' , 'windowsce' , 'palm' , 'operamini' ,
'operamobi' , 'opera mobi' , 'openwave' , 'nexusone' , 'cldc' , 'midp' , 'wap' , 'mobile'
);
// 从HTTP_USER_AGENT中查找手机浏览器的关键字
if (preg_match( "/(" .implode( '|' , $clientkeywords ). ")/i" , $userAgent )&& strpos ( $userAgent , 'ipad' ) === false)
{
return true;
}
}
return false;
}

下面的jsp代码简单判断浏览器类型,如果是iphone或者android就跳转到手机版本网页:

1
2
3
4
5
6
7
8
9
<%
String ua = request.getHeader( "User-Agent" ) ;
if (ua != null ) {
if (ua.indexOf( "iPhone" ) >- 1 || ua.indexOf( "iPad" ) >- 1 || (ua.indexOf( "ndroid" ) >- 1 && ua.indexOf( "WebKit" ) >- 1 )) {
response.sendRedirect( "http://localhost/mobile" );
return ;
}
}
%>

下面是.NET代码(C#) 在.NET下,其中一个方法是利用HttpBrowserCapabilities,代码如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
System.Web.HttpBrowserCapabilities browser = Request.Browser;
string s = "Browser Capabilities\n"
+ "Type = " + browser.Type + "\n"
+ "Name = " + browser.Browser + "\n"
+ "Version = " + browser.Version + "\n"
+ "Major Version = " + browser.MajorVersion + "\n"
+ "Minor Version = " + browser.MinorVersion + "\n"
+ "Platform = " + browser.Platform + "\n"
+ "Is Beta = " + browser.Beta + "\n"
+ "Is Crawler = " + browser.Crawler + "\n"
+ "Is AOL = " + browser.AOL + "\n"
+ "Is Win16 = " + browser.Win16 + "\n"
+ "Is Win32 = " + browser.Win32 + "\n"
+ "Supports Frames = " + browser.Frames + "\n"
+ "Supports Tables = " + browser.Tables + "\n"
+ "Supports Cookies = " + browser.Cookies + "\n"
+ "Supports VBScript = " + browser.VBScript + "\n"
+ "Supports JavaScript = " +
browser.EcmaScriptVersion.ToString() + "\n"
+ "Supports Java Applets = " + browser.JavaApplets + "\n"
+ "Supports ActiveX Controls = " + browser.ActiveXControls
+ "\n"
+ "Supports JavaScript Version = " +
browser[ "JavaScriptVersion" ] + "\n" ;

在web.config中需要在filter中进行匹配

1
2
3
<system.web> <browserCaps> <use var= "HTTP_USER_AGENT" />
<filter> < case match= "Windows NT 6.1" > platform=Windows7 </ case > </filter>
</browserCaps> </system.web>

另外一个方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
///<summary>
/// 根据 Agent 判断是否是智能手机
///</summary>
///<returns></returns>
public static bool CheckAgent()
{
bool flag = false ;
 
string agent = HttpContext.Current.Request.UserAgent;
string [] keywords = { "Android" , "iPhone" , "iPod" , "iPad" , "Windows Phone" , "MQQBrowser" };
 
//排除 Windows 桌面系统
if (!agent.Contains( "Windows NT" ) || (agent.Contains( "Windows NT" ) && agent.Contains( "compatible; MSIE 9.0;" )))
{
//排除 苹果桌面系统
if (!agent.Contains( "Windows NT" ) && !agent.Contains( "Macintosh" ))
{
foreach ( string item in keywords)
{
if (agent.Contains(item))
{
flag = true ;
break ;
}
}
}
}
 
return flag;
}

代码解释: 1. !agent.Contains("Windows NT") && !agent.Contains("Macintosh") 排除Window 桌面系统 和 苹果桌面系统 2. "Android", "iPhone", "iPod", "iPad", "Windows Phone", "MQQBrowser" 这些是判断智能设备Agent中的关键词 3. MQQBrowser 为 QQ 手机浏览器,QQ 手机的Agent 比较特殊,所以单独判断

各移动浏览器的http user-agent: 一、微信的http user-agent(关键词MicroMessenger) 1. Iphone(苹果)平台微信的ucweb的useragent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2 2. Android(安卓)平台微信的ucweb的useragent:1 Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255 二、UC浏览器的http user-agent(关键词UCWEB) 1. android平台: android平台ucweb急速模式开启下ucweb浏览器useragent:  UCWEB/2.0 (Linux; U; Adr 2.3; zh-CN; MI-ONEPlus) U2/1.0.0 UCBrowser/8.6.0.199 U2/1.0.0 Mobile android平台ucweb急速模式关闭状态下的http_user_agent: Mozilla/5.0 (Linux; U; Android 2.3; zh-CN; MI-ONEPlus) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/8.6.0.199 U3/0.8.0 Mobile Safari/534.13  2. iPhone 平台 iPhone 平台极速模式开启状态下ucweb浏览器useragent:  UCWEB/2.0 (iOS; U; iPh OS 4_3_2; zh-CN; iPh4) U2/1.0.0 UCBrowser/8.6.0.199 U2/1.0.0 Mobile  iPhone 平台极速模式关闭状态下 UA 示例如下:(OBUA 为自带浏览器 UA)\ OBUA UCBrowser/8.6.0.199 Mobile 3. iPad 平台 ipad平台下ucweb浏览器useragent: Mozilla/5.0 (iPad; U; CPU OS 6_0 like Mac OS X; zh-CN; iPad2) AppleWebKit/534.13 (KHTML, like Gecko) UCBrowser/8.6.0.199 U3/0.8.0 Safari/534.13  4. windows Phone平台 WP平台下ucweb浏览器useragent: WP平台极速模式开启状态下:(以 Nokia 900 为例) UCWEB/2.0 (Windows; U; wds7.10; zh-CN; Nokia 900) U2/1.0.0 UCBrowser/8.6.0.199 U2/1.0.0 Mobile  5. 诺基亚平台 诺基亚手机Symbian&Java平台ucweb浏览器useragen: Nokia 5800 XpressMusic/UCWEB8.9.0.253/50/999  安卓QQ浏览器HD版检测的结果是:mac, Safari,这个很是变态,自己看着处理吧 3个检测浏览器User-Agent信息的网站 三、一些特别的浏览器 QQ浏览器(android) MQQBrowser/3.6/Adr (Linux; U; 4.0.3; zh-cn; HUAWEI U8818 Build/U8818V100R001C17B926;480*800) 魅族UC浏览器(android) JUC (Linux; U; 2.3.5; zh-cn; MEIZU MX; 640*960) UCWEB8.5.1.179/145/33232 UC浏览器(iphone) IUC(U;iOS 5.1;Zh-cn;320*480;)/UCWEB8.8.0.212/42/997 Opera mobile(android) Opera/9.80 (Android 4.0.3; Linux; Opera Mobi/ADR-1210241554) Presto/2.11.355 Version/12.10 Opera mini(iphone) Opera/9.80 (iPhone; Opera Mini/7.0.5/28.2690; U; zh) Presto/2.8.119 Version/11.10 三个在线网站,通过手机浏览器就可以在线检测 1. http://whatsmyuseragent.com/ 2. http://whatsmyua.com/ 3. http://www.useragentstring.com/

区分网页代码1:

<html>
<script type="text/javascript">
/*
* 智能机浏览器版本信息:
*
*/
  var browser={
    versions:function(){
           var u = navigator.userAgent, app = navigator.appVersion;
           return {//移动终端浏览器版本信息
                trident: u.indexOf('Trident') > -1, //IE内核
                presto: u.indexOf('Presto') > -1, //opera内核
                webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端
                ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
                iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器
                iPad: u.indexOf('iPad') > -1, //是否iPad
                webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
            };
         }(),
         language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
document.writeln("语言版本: "+browser.language);
document.write("<br/>");  
document.writeln(" 是否为移动终端: "+browser.versions.mobile);
document.write("<br/>");  
document.writeln(" ios终端: "+browser.versions.ios);
document.write("<br/>");  
document.writeln(" android终端: "+browser.versions.android);
document.write("<br/>");  
document.writeln(" 是否为iPhone: "+browser.versions.iPhone);
document.write("<br/>");  
document.writeln(" 是否iPad: "+browser.versions.iPad);
document.write("<br/>");  
document.writeln(navigator.userAgent);
document.write("<br/>");  	
 
</script>

</html>

区分网页代码2:

<!doctype html>
<html>
<script type="text/javascript">
function browserRedirect() { 
var sUserAgent= navigator.userAgent.toLowerCase(); 
var bIsIpad= sUserAgent.match(/ipad/i) == "ipad"; 
var bIsIphoneOs= sUserAgent.match(/iphone os/i) == "iphone os"; 
var bIsMidp= sUserAgent.match(/midp/i) == "midp"; 
var bIsUc7= sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4"; 
var bIsUc= sUserAgent.match(/ucweb/i) == "ucweb"; 
var bIsAndroid= sUserAgent.match(/android/i) == "android"; 
var bIsCE= sUserAgent.match(/windows ce/i) == "windows ce"; 
var bIsWM= sUserAgent.match(/windows mobile/i) == "windows mobile"; 

if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) { 
document.getElementById("a").style.display="block";
document.getElementById("b").style.display="none";
} else { 
document.getElementById("b").style.display="block";
document.getElementById("a").style.display="none";

} 
} 
window.οnlοad=function(){browserRedirect();}
</script> 
<meta  charset="utf-8"/>
<head>
<title>web1</title>
</head>
<body>
<div id="a"><p>这是手机</p></div>
<div id="b"><p>这是电脑</p></div>
</body>

</html>



                
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值