判断访客终端类型集锦


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 相关文章推荐
jQuery1.5.1 animate方法源码阅读
Apr 05 Javascript
js 去除字符串第一位逗号的方法
Jun 07 Javascript
javascript实现的HashMap类代码
Jun 27 Javascript
JavaScript判断textarea值是否为空并给出相应提示
Sep 04 Javascript
Bootstrap媒体对象的实现
May 01 Javascript
通过正则表达式获取url中参数的简单实现
Jun 07 Javascript
javaScript事件学习小结(四)event的公共成员(属性和方法)
Jun 09 Javascript
基于Turn.js 实现翻书效果实例解析
Jun 20 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
jQuery实现html双向绑定功能示例
Oct 09 jQuery
BootStrap自定义popover,点击区域隐藏功能的实现
Jan 23 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
Apr 25 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与javascript对多项选择的处理
2006/10/09 PHP
php去除重复字的实现代码
2011/09/16 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
Python实现简单的代理服务器
2015/07/25 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
python通过实例讲解反射机制
2019/10/17 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
python中利用matplotlib读取灰度图的例子
2019/12/07 Python
Python with标签使用方法解析
2020/01/17 Python
Python序列化pickle模块使用详解
2020/03/05 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
2014年学校安全工作总结
2014/11/13 职场文书
安全先进班组材料
2014/12/26 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
土建技术员岗位职责
2015/04/11 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
python基础之文件处理知识总结
2021/05/23 Python
使用feign服务调用添加Header参数
2021/06/23 Java/Android