判断访客终端类型集锦


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 相关文章推荐
IE无法设置短域名下Cookie
Sep 23 Javascript
range 标准化之获取
Aug 28 Javascript
JavaScript实现查找字符串中第一个不重复的字符
Dec 29 Javascript
IE6兼容透明背景图片及解决方案
Aug 19 Javascript
JavaScript动态创建form表单并提交的实现方法
Dec 10 Javascript
AngularJS入门教程之表格实例详解
Jul 27 Javascript
H5用户注册表单页 注册模态框!
Sep 17 Javascript
通过JS获取Request.QueryString()参数的值实现方法
Sep 27 Javascript
Node.js中如何合并两个复杂对象详解
Dec 31 Javascript
Bootstrap Table 搜索框和查询功能
Nov 30 Javascript
webpack4 处理SCSS的方法示例
Sep 03 Javascript
详解Vue3使用axios的配置教程
Apr 29 Vue.js
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
无线电的诞生过程
2021/03/01 无线电
PHP4中实现动态代理
2006/10/09 PHP
PHP的基本常识小结
2013/07/05 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
动态加载js的几种方法
2006/10/23 Javascript
JavaScript语言核心数据类型和变量使用介绍
2013/08/23 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
AngularJS模块学习之Anchor Scroll
2016/01/19 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
详解vue 在移动端体验上的优化解决方案
2019/05/20 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
[01:56]林书豪DOTA2上海特级锦标赛励志短片
2016/03/05 DOTA
利用Psyco提升Python运行速度
2014/12/24 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
django 读取图片到页面实例
2020/03/27 Python
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上
2013/07/06 面试题
地方课程教学计划
2015/01/19 职场文书
青岛导游词
2015/02/12 职场文书
新闻稿怎么写
2015/07/18 职场文书
python利用while求100内的整数和方式
2021/11/07 Python