判断访客终端类型集锦


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 相关文章推荐
初学JavaScript第二章
Sep 30 Javascript
jQuery 源代码显示控件 (Ajax加载方式).
May 18 Javascript
JS 添加网页桌面快捷方式的代码详细整理
Dec 27 Javascript
offsetHeight在OnLoad中获取为0的现象
Jul 22 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
Apr 02 Javascript
js数组与字符串的相互转换方法
Jul 09 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
May 11 Javascript
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
May 05 jQuery
基于vue组件实现猜数字游戏
May 28 Javascript
webpack+vue中使用别名路径引用静态图片地址
Nov 20 Javascript
Vue中使用sass实现换肤功能
Sep 07 Javascript
介绍一下28个JS常用数组方法
May 06 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
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
javascript 面向对象编程基础:封装
2009/08/21 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
NodeJS 模块开发及发布详解分享
2012/03/07 NodeJs
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
在MAC上搭建python数据分析开发环境
2016/01/26 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
蛋白质世界:Protein World
2017/11/23 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
应届生.NET方向面试题
2015/05/23 面试题
Shell脚本如何向终端输出信息
2014/04/25 面试题
英文简历中的自荐信范文
2013/12/14 职场文书
青年志愿者活动方案
2014/08/17 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
党员个人总结自评
2015/02/14 职场文书
大学学生会辞职信
2015/05/13 职场文书