判断访客终端类型集锦


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 相关文章推荐
jquery 得到当前页面高度和宽度的两个函数
Feb 21 Javascript
JS中setTimeout()的用法详解
Apr 14 Javascript
常用js字符串判断方法整理
Oct 18 Javascript
JavaScript Function函数类型介绍
Apr 08 Javascript
简单实现轮播图效果的实例
Jul 15 Javascript
jQuery插件zTree实现的多选树效果示例
Mar 08 Javascript
如何把vuejs打包出来的文件整合到springboot里
Jul 26 Javascript
vue监听input标签的value值方法
Aug 27 Javascript
微信公众号H5支付接口调用方法
Jan 10 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
Mar 14 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
Nov 12 Javascript
vue 避免变量赋值后双向绑定的操作
Nov 07 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
人大复印资料处理程序_补充篇
2006/10/09 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
PHP时间类完整代码实例
2021/02/26 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
2007/03/10 Javascript
javascript 写类方式之八
2009/07/05 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
JavaScript中常用的运算符小结
2012/01/18 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
CSS Grid布局教程之浏览器开启CSS Grid Layout汇总
2014/12/30 HTML / CSS
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
教育专业个人求职信
2013/12/02 职场文书
社团成立邀请函
2014/01/08 职场文书
运动会稿件300字
2014/02/14 职场文书
英文感谢信格式
2015/01/21 职场文书
长江七号观后感
2015/06/11 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书