利用JS判断客户端类型你应该知道的四种方法
程序员文章站
2024-01-22 13:08:28
前言
我们在写响应式布局的时候,总要考虑是否是移动端,基于这个这里总结了4种方法判断客户端是否是ios或者android。分享出来供大家参考学习,下面随着小编来一起看看详...
前言
我们在写响应式布局的时候,总要考虑是否是移动端,基于这个这里总结了4种方法判断客户端是否是ios或者android。分享出来供大家参考学习,下面随着小编来一起看看详细的介绍吧。
方法如下:
1. 第一种:通过判断浏览器的useragent,用正则来判断是否是ios和android客户端
user agent中文名为用户代理,是http协议中的一部分,属于头域的组成部分,user agent也简称ua。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标 识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的 ua来判断的。ua可以进行伪装。
浏览器的ua字串的标准格式:浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识版本信息。但各个浏览器有所不同。
代码如下:
<script type="text/javascript"> var u = navigator.useragent; var isandroid = u.indexof('android') > -1 || u.indexof('adr') > -1; //android终端 var isios = !!u.match(/\(i[^;]+;( u;)? cpu.+mac os x/); //ios终端 alert('是否是android:'+isandroid); alert('是否是ios:'+isios); </script>
2. 第二种:检查是否是移动端(mobile)、ipad、iphone、微信、qq等。
2.1 代码如下:
<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.*/), //是否为移动终端 ios: !!u.match(/\(i[^;]+;( u;)? cpu.+mac os x/), //ios终端 android: u.indexof('android') > -1 || u.indexof('adr') > -1, //android终端 iphone: u.indexof('iphone') > -1 , //是否为iphone或者qqhd浏览器 ipad: u.indexof('ipad') > -1, //是否ipad webapp: u.indexof('safari') == -1, //是否web应该程序,没有头部与底部 weixin: u.indexof('micromessenger') > -1, //是否微信 (2015-01-22新增) qq: u.match(/\sqq/i) == " qq" //是否qq }; }(), language:(navigator.browserlanguage || navigator.language).tolowercase() } </script>
2.2 使用方法
/判断是否ie内核 if(browser.versions.trident){ alert("is ie"); } //判断是否webkit内核 if(browser.versions.webkit){ alert("is webkit"); } //判断是否移动端 if(browser.versions.mobile||browser.versions.android||browser.versions.ios){ alert("移动端"); }
2.3 检测浏览器语言
currentlang = navigator.language; //判断除ie外其他浏览器使用语言 if(!currentlang){//判断ie浏览器使用语言 currentlang = navigator.browserlanguage; } alert(currentlang);
3. 判断iphone|ipad|ipod|ios|android客户端
代码如下:
if (/(iphone|ipad|ipod|ios)/i.test(navigator.useragent)) { //判断iphone|ipad|ipod|ios //alert(navigator.useragent); window.location.href ="iphone.html"; } else if (/(android)/i.test(navigator.useragent)) { //判断android //alert(navigator.useragent); window.location.href ="android.html"; } else { //pc window.location.href ="pc.html"; };
4. 判断pc还是移动端
代码如下:
<script> //判断是否手机端访问 var useragentinfo = navigator.useragent.tolowercase(); var agents = ["android", "iphone", "symbianos", "windows phone", "ipad", "ipod"]; var ly=document.referrer; //返回导航到当前网页的超链接所在网页的url for (var v = 0; v < agents.length; v++) { if (useragentinfo.indexof(agents[v]) >= 0&&(ly==""||ly==null)) { this.location.href='http://m.***.com'; //wap端地址 } } </script>
5. 常用跳转代码
看代码
<script type="text/javascript"> // borwserredirect (function browserredirect(){ var suseragent = navigator.useragent.tolowercase(); var bisipad = suseragent.match(/ipad/i) == 'ipad'; var bisiphone = 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) == 'web'; var bisce = suseragent.match(/windows ce/i) == 'windows ce'; var biswm = suseragent.match(/windows mobile/i) == 'windows mobile'; var bisandroid = suseragent.match(/android/i) == 'android'; var pathname = location.pathname if(bisipad || bisiphone || bismidp || bisuc7 || bisuc || bisce || biswm || bisandroid ){ window.location.href = 'http://m.geekjc.com'+pathname; //wap端地址 } })(); </script>
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。