判断访客终端类型集锦


Posted in Javascript onJune 05, 2015

当用户使用手机等移动终端访问网站时,我们可以通过程序检测用户终端类型,如果是手机用户,则引导用户访问适配手机屏幕的移动站点。本文将介绍分别使用PHP和JAVASCRIPT代码判断用户终端类型。

PHP版

我们使用PHP的$_SERVER['HTTP_USER_AGENT']来获取手机用户浏览器的用户代理,然后匹配已有的各种手机浏览器代理库,如果含有匹配的关键字,则判断为手机(移动终端)用户。

function is_mobile() { 
  $user_agent = $_SERVER['HTTP_USER_AGENT']; 
  $mobile_agents = array("240x320","acer","acoon","acs-","abacho","ahong","airness","alcatel","amoi", 
  "android","anywhereyougo.com","applewebkit/525","applewebkit/532","asus","audio", 
  "au-mic","avantogo","becker","benq","bilbo","bird","blackberry","blazer","bleu", 
  "cdm-","compal","coolpad","danger","dbtel","dopod","elaine","eric","etouch","fly ", 
  "fly_","fly-","go.web","goodaccess","gradiente","grundig","haier","hedy","hitachi", 
  "htc","huawei","hutchison","inno","ipad","ipaq","iphone","ipod","jbrowser","kddi", 
  "kgt","kwc","lenovo","lg ","lg2","lg3","lg4","lg5","lg7","lg8","lg9","lg-","lge-","lge9","longcos","maemo", 
  "mercator","meridian","micromax","midp","mini","mitsu","mmm","mmp","mobi","mot-", 
  "moto","nec-","netfront","newgen","nexian","nf-browser","nintendo","nitro","nokia", 
  "nook","novarra","obigo","palm","panasonic","pantech","philips","phone","pg-", 
  "playstation","pocket","pt-","qc-","qtek","rover","sagem","sama","samu","sanyo", 
  "samsung","sch-","scooter","sec-","sendo","sgh-","sharp","siemens","sie-","softbank", 
  "sony","spice","sprint","spv","symbian","tablet","talkabout","tcl-","teleca","telit", 
  "tianyu","tim-","toshiba","tsm","up.browser","utec","utstar","verykool","virgin", 
  "vk-","voda","voxtel","vx","wap","wellco","wig browser","wii","windows ce", 
  "wireless","xda","xde","zte"); 
  $is_mobile = false; 
  foreach ($mobile_agents as $device) { 
    if (stristr($user_agent, $device)) { 
      $is_mobile = true; 
      break; 
    } 
  } 
  return $is_mobile; 
}

上述代码中函数is_mobile()来判断用户终端类型,将收集到的当今各种手机的HTTP_USER_AGENT归结到数组$mobile_agents中,并进行匹配。使用时只需调用函数is_mobile()。如以下代码表示,当匹配用户为手机访问时,页面跳转到网站手机版m.3water.com。

if (is_mobile()) { 
  header('Location:http://m.3water.com'); 
} else { 
  echo '请使用手机访问.'; 
}

Javascript版

您也可以直接在前端页面上加入一段Javascript脚本来判断用户的终端类型。Javascript也是通过获取浏览器的user-agent信息,然后匹配已有的user-agent信息库。

if ((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iOS|iPad|Backerry| 
WebOS|Symbian|Windows Phone|Phone)/i))) { 
  location.replace("http://m.3water.com") 
}else{ 
  document.write("请使用手机访问."); 
}

以上代码还不是很完善,有兴趣的朋友欢迎补充。

当然,我们也可以通过响应式布局来匹配各种不同屏幕,这样可以节约开发成本,但是当客户对移动网站的功能需求,对于独立的移动站点最好是采用在网站入口处判断用户访问终端类型,一般是我们在主站首页就做判断,如果是手机访客则跳转到手机版页面,否则按正常PC方式访问页面。

Javascript 相关文章推荐
msn上的tab功能Firefox对childNodes处理的一个BUG
Jan 21 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
Jan 07 Javascript
jquery弹出关闭遮罩层实例
Aug 06 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
AngularJS入门教程之AngularJS表达式
Apr 18 Javascript
如何处理JSON中的特殊字符
Nov 30 Javascript
Bootstrap源码解读排版(1)
Dec 23 Javascript
基于js中style.width与offsetWidth的区别(详解)
Nov 12 Javascript
讲解vue-router之命名路由和命名视图
May 28 Javascript
JavaScript中 ES6变量的结构赋值
Jul 10 Javascript
详解Webpack-dev-server的proxy用法
Sep 08 Javascript
vue商城中商品“筛选器”功能的实现代码
Jul 01 Javascript
JavaScript中constructor()方法的使用简介
Jun 05 #Javascript
JavaScript中的原型prototype属性使用详解
Jun 05 #Javascript
HTML5使用DeviceOrientation实现摇一摇功能
Jun 05 #Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
Jun 05 #Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
Jun 05 #Javascript
jQuery+HTML5实现手机摇一摇换衣特效
Jun 05 #Javascript
在JavaScript中使用NaN值的方法
Jun 05 #Javascript
You might like
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
Ext grid 添加右击菜单
2009/11/26 Javascript
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
js识别不同浏览器基于userAgent做判断
2014/07/29 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
python双向链表实现实例代码
2013/11/21 Python
Python中使用partial改变方法默认参数实例
2015/04/28 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
python实现一个简单的ping工具方法
2019/01/31 Python
python导入坐标点的具体操作
2019/05/10 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
python将字符串转换成json的方法小结
2019/07/09 Python
浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
2020/06/30 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
客户经理岗位职责
2013/12/08 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
中文专业自荐书
2014/06/29 职场文书
交通事故协议书范文
2014/10/23 职场文书
法定代表人身份证明书
2015/06/18 职场文书
2016年教师师德师风承诺书
2016/03/25 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
图文详解nginx日志切割的实现
2022/01/18 Servers