判断访客终端类型集锦


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 相关文章推荐
用js遍历 table的脚本
Jul 23 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 Javascript
JQuery遍历json数组的3种方法
Nov 08 Javascript
JavaScript获取网页表单提交方式的方法
Apr 02 Javascript
Node.js中npm常用命令大全
Jun 09 Javascript
JavaScript_ECMA5数组新特性详解
Jun 12 Javascript
JavaScript中的await/async的作用和用法
Oct 31 Javascript
AngularJS extend用法详解及实例代码
Nov 15 Javascript
vue2.0 keep-alive最佳实践
Jul 06 Javascript
Angular5中提取公共组件之radio list的实例代码
Jul 10 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
Aug 24 Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 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
PHP实现对站点内容外部链接的过滤方法
2014/09/10 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
Javascript的匿名函数小结
2009/12/31 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
javascript加号"+"的二义性说明
2013/03/04 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
JavaScript WeakMap使用详解
2021/02/05 Javascript
python简单猜数游戏实例
2015/07/09 Python
python轻松查到删除自己的微信好友
2016/01/10 Python
Windows和Linux下Python输出彩色文字的方法教程
2017/05/02 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
Django数据库迁移常见使用方法
2020/11/12 Python
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
2014年领班工作总结
2014/11/25 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS