js判断当前设备
最近用bootstrap做自适应,发现仍然很难很好的兼容web端和PC端的现实。
仔细观察百度,淘宝,京东等大型网站,发现这些网站都有对应不同客户端的子站。
例如:
| 站点 | PC端url | web端url |
|---|---|---|
| 百度 | www.baidu.com | m.baidu.com |
| 淘宝 | www.taobao.com | m.taobao.com |
| 京东 | www.jd.com | m.jd.com |
| 网易 | www.163.com | 3g.163.com |
虽然对应不同的客户端做了不同的页面,但如何得知用户当前用的什么呢?
通过度娘找到了一套简单易理解的js代码
/*判断当前设备跳转到指定地址。PCurl:PC端地址;WebUel:PC端地址;*/
function judgmentClient(PCurl,WebUel){
var UserClient = navigator.userAgent.toLowerCase();
var IsIPad = UserClient.match(/ipad/i) == "ipad";
var IsIphoneOs = UserClient.match(/iphone os/i) == "iphone os";
var IsMidp = UserClient.match(/midp/i) == "midp";
var IsUc7 = UserClient.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var IsUc = UserClient.match(/ucweb/i) == "ucweb";
var IsAndroid = UserClient.match(/android/i) == "android";
var IsCE = UserClient.match(/windows ce/i) == "windows ce";
var IsWM = UserClient.match(/windows mobile/i) == "windows mobile";
if(IsIPad || IsIphoneOs || IsMidp || IsUc7 || IsUc || IsAndroid || IsCE || IsWM){
window.location = WebUel;
}else{
window.location = PCurl;
}
}
这套代码虽然可以直接使用,但会有个调用的问题。
假设现有一个PC页 和 一个Web页,这两个页面onload的时候都调用这个函数,结果是反复调用此函数,页面不停刷新。(有兴趣的朋友可以自行尝试)
起初这个调用bug想了两个小时就是绕不出来。(本菜有点愚钝)
后来终于想明白了,其实就是把这个拆开成两个函数,分开调用就OK了。
// PC端调用判断web设备
function PCjudgment(WebUel){
var UserClient = navigator.userAgent.toLowerCase();
var IsIPad = UserClient.match(/ipad/i) == "ipad";
var IsIphoneOs = UserClient.match(/iphone os/i) == "iphone os";
var IsMidp = UserClient.match(/midp/i) == "midp";
var IsUc7 = UserClient.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var IsUc = UserClient.match(/ucweb/i) == "ucweb";
var IsAndroid = UserClient.match(/android/i) == "android";
var IsCE = UserClient.match(/windows ce/i) == "windows ce";
var IsWM = UserClient.match(/windows mobile/i) == "windows mobile";
if(IsIPad || IsIphoneOs || IsMidp || IsUc7 || IsUc || IsAndroid || IsCE || IsWM){
window.location = WebUel;
}
}
// web端调用判断PC设备
function Webjudgment(pcUel){
var UserClient = navigator.userAgent.toLowerCase();
var IsIPad = UserClient.match(/ipad/i) == "ipad";
var IsIphoneOs = UserClient.match(/iphone os/i) == "iphone os";
var IsMidp = UserClient.match(/midp/i) == "midp";
var IsUc7 = UserClient.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var IsUc = UserClient.match(/ucweb/i) == "ucweb";
var IsAndroid = UserClient.match(/android/i) == "android";
var IsCE = UserClient.match(/windows ce/i) == "windows ce";
var IsWM = UserClient.match(/windows mobile/i) == "windows mobile";
if(!IsIPad && !IsIphoneOs && !IsMidp && !IsUc7 && !IsUc && !IsAndroid && !IsCE && !IsWM){
window.location = pcUel;
}
}
pc端调用pc的函数,web端调用web的函数,这样就搞定了。
js判断当前设备的更多相关文章
- JS判断访问设备、客户端操作系统类型
先给出一个实例:判断windows.linux.android 复制以下代码另存为html文件即可. <html> <head> <title>判断操作系统< ...
- JS判断当前设备是 PC IOS Andriod
JS判断当前设备是 PC IOS Andriod <script > window.onload = function(){ var isPc = IsPC(); var isAndroi ...
- [转]JS判断访问设备、客户端操作系统类型
本文转自:http://www.cnblogs.com/duanguyuan/p/3534470.html 先给出一个实例:判断windows.linux.android 复制以下代码另存为html文 ...
- JS判断访问设备(userAgent)加载不同页面 JS判断客户端操作系统类型(platform)
//平台.设备和操作系统 var system ={ win : false, mac : false, xll : false }; //检测平台 var p = navigator.platfor ...
- PHP和js判断访问设备是否是微信浏览器实例
PHP和js判断访问设备是否是微信浏览器实例,代码非常精简,适合新手学习. js判断是否是微信浏览器: 1 function is_weixin() { 2 var ua = window.navig ...
- JS判断移动设备最佳方法 并实现跳转至手机版网页
我在开发的Magento或Wordpress主题时,通过都会制作手机版本,为了实现某个片段在手机端和桌面端不同功能,又或者如果是手机设备,就跳转到指定的网页上,那么这里就需要用到JS来做判断了,下面有 ...
- JS判断移动设备最佳方法
最实用的还是下面这个: 方法一:纯JS判断 使用这方法既简单,又实用,不需要引入jQuery库,把以下代码加入到<head>里即可. <script type=”text/javas ...
- js 判断移动设备、pc端、android、iPhone、是否为微信、微博、qq空间
varbrowser = { versions: function () { var u = navigator.userAgent, app = navigator.appVersio ...
- js判断移动设备
在开发中可能需要去判断用户的设备重定向到相应的网址: 1. 判断 iPhone Android iPod if((navigator.userAgent.match(/iPhone/i))||(n ...
随机推荐
- 【C# 基础应用】我的第一个App,不容易——随机生成小人网站,asp.net core
Index page Welcome page 生成很多不同的小人哦~我是如何实现这么stupid but interesting的程序呢?我用了ASP.NET Core 画小人的话,用了一个很stu ...
- c3p0连接池]
<c3p0-config> <!-- 默认配置 --> <default-config> <property name="jdbcUrl" ...
- TextField文本框
1)失去第一响应者状态方法(即关闭键盘) 要先将视图view的底层类设置为UIControl类 再设置view的touch down事件,在事件中写入以下方法 [self.textField resi ...
- 此操作失败的原因是对 IID 为“{000208DA-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface
有些电脑报错,有些电脑正常. 环境:VS2010 WinForm程序, Office2007 C#操作Excel时报错.错误: 无法将类型为“System.__ComObject”的 COM 对象强制 ...
- win7远程桌面连接windows2008服务器,连接启动很慢。我是这样解决的。
1.在本地链接属性中把IPv6勾选取消掉. 2.在window命令中运行 (cmd) netsh int tcp setglobal autotuninglevel=disable 祝君成功!
- jQuery入门教程
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...
- GPT WIN 换硬盘 硬盘克隆或复制 无法确定的问题,硬盘大小不一致换系统。
当你购买了一个新硬盘,希望换掉旧硬盘的时候.发现 GPT + EFI 要求硬盘上的前两个分区必须和旧的一样,否则就无法启动. 这就是你用 分区大师(PartAssist)硬盘克隆完了,也无法启动的原因 ...
- wampserver 2.5多站点配置
wampserver2.5版本与之前老版本配置有区别,假设wamp安装在d:/wamp下.第一步:修改D:/wamp/bin/apache/apache2.4.9/conf/httpd.conf 文件 ...
- java 观察者模式
/** 抽象的观察者 */ public interface Watcher { // status 为 被被观察着传递过来的状态 public void update(String status); ...
- List 用法和实例(转载)
写在粘贴复制前:英文的感觉也可以,也能看的懂,多看看英文资料没坏处的 Problem. You have questions about the List collection in the .NET ...