UA判断打开页面的环境,然后在callBack写相应环境下的回调函数
这是js代码
/*
* 2016、11、10
* SunJingxin
* V 1.0.0
*
*/
(function(){
/*
* 使用方法:
* 一、引入ua.js
* 二、直接调用 MobilePort 对象的属性与方法。
* 三、目前共1个属性10个方法
* MobilePort 对象
* 属性:MobilePort.back;// 数组 内容如下
* 方法:MobilePort.androidBrowser(callBack) 1 安卓浏览器 //callBack 回调只有在安卓浏览器下执行
* 方法:MobilePort.iosBrowser(callBack) 2 ios浏览器 // 下面全部类似
* 方法:MobilePort.qqBrowser(callBack) 3 QQ浏览器
* 方法:MobilePort.ucBrowser(callBack) 4 uc浏览器
* 方法:MobilePort.wxBrowser(callBack) 5 微信浏览器
* 方法:MobilePort.pc(callBack) 6 pc浏览器
* 方法:MobilePort.move(callBack) 7 移动浏览器
* 方法:MobilePort.androidApp(callBack, parameter) 8 安卓APP
* 方法:MobilePort.iosApp(callBack, parameter) 9 iosApp
* 方法:MobilePort.androidWx(callBack) 10 安卓WX
* 方法:MobilePort.iosWx(callBack) 11 iosWX
*
*
*
* callBack 是回调函数,在指定环境下执行的函数。
* parameter 是url上的参数,用于识别APP与Browser(必须),字符串。
* 例如 www.baidu.com?from=app parameter 指 from=app
* from=app 是前后端约定好的指代 App请求的网页。
*
* back数组中可能的值:内核、浏览器、移动端平台、pc端平台 、其他
* webkit Trident Presto Gecko //内核 webkit内核 Trident内核 Presto内核 Gecko内核
* IE chrome firefox opera safari //浏览器 IE浏览器 chrome浏览器 firefox浏览器 opera浏览器 safari浏览器
* UCBrowser MQQBrowser //浏览器 UC浏览器 QQ浏览器
* android ipad iphone //移动端平台 android平台 ipad平台 iphone平台
* Mac windows Linux //pc端平台 Mac平台 windows平台 Linux平台
* move wx //其他 move移动端平台 wx微信浏览器
*/ /*
* 正则赋值 内核
*/
// webkit 内核
var webkit = /webkit/i;
//IE内核
var Trident = /Trident/i;
//opera内核
var Presto = /Presto/i;
//火狐内核
var Gecko = /Gecko/i;
/*
* 正则赋值 浏览器
*/
// chrome 浏览器
var chrome1 = /chrome\/(\d+\.\d+)/i;
// firefox 浏览器
var firefox = /firefox\/(\d+\.\d+)/i;
// opera 浏览器
var opera = /opera(\/| )(\d+(\.\d+)?)(.+?(version\/(\d+(\.\d+)?)))?/i;
// safari 浏览器
var safari = /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i;
// IE 浏览器
var IE = /msie (\d+\.\d+)/i;
// UC 浏览器
var UCBrowser = /UCBrowser/i;
//QQ浏览器
var MQQBrowser = /MQQBrowser/i;
/*
* 正则赋值 pc端
*/
// macintosh 系统
var Mac = /macintosh/i;
// windows 平台
var windows = /windows/i;
// Linux 平台
var Linux = /Linux/i;
/*
* 正则赋值 移动端
*/
// android 系统
var android = /android/i;
// ipad 系统
var ipad = /ipad/i;
// iphone 系统
var iphone = /iphone/i;
/*
* 正则赋值 其他
*/
// 移动终端
var move =
/(nokia|iphone|android|ipad|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220)/i;
// 微信打开
var wx = /MicroMessenger/i;
var back = [];
var ua = navigator.userAgent; //内核判断
if (webkit.test(ua)) { //webkit
back.push("webkit");
};
if (Trident.test(ua)) { //IE
back.push("Trident");
};
if (Presto.test(ua)) { //欧朋
back.push("Presto");
};
if (Gecko.test(ua)) { //火狐
back.push("Gecko");
};
//浏览器 判断
if (IE.test(ua)) {
back.push("IE");
};
if (chrome1.test(ua)) {
back.push("chrome");
};
if (firefox.test(ua)) {
back.push("firefox");
};
if (opera.test(ua)) {
back.push("opera");
};
if (safari.test(ua)) {
back.push("safari");
};
if (UCBrowser.test(ua)) {
back.push("UCBrowser");
};
if (MQQBrowser.test(ua)) {
back.push("MQQBrowser");
};
//pc 平台判断
if (Mac.test(ua)) {
back.push("Mac");
};
if (windows.test(ua)) {
back.push("windows");
};
if (Linux.test(ua)) {
back.push("Linux");
};
//移动平台 判断
if (android.test(ua)) {
back.push("android");
};
if (ipad.test(ua)) {
back.push("ipad");
};
if (iphone.test(ua)) {
back.push("iphone");
};
//其他
if (move.test(ua)) {
back.push("move");
};
if (wx.test(ua)) {
back.push("wx");
};
MobilePort = {};
//back 包含所有信息
MobilePort.back = back;
//1 android 浏览器
MobilePort.androidBrowser = function (callBack) {
if (android.test(ua)) {
callBack();
} else {
return "error";
}
};
//2 ios 浏览器
MobilePort.iosBrowser = function (callBack) {
if (ipad.test(ua) || iphone.test(ua)) {
callBack();
} else {
return "error";
}
};
//3 QQ 浏览器
MobilePort.qqBrowser = function (callBack) {
if (MQQBrowser.test(ua)) {
callBack();
} else {
return "error";
}
};
//4 UC 浏览器
MobilePort.ucBrowser = function (callBack) {
if (UCBrowser.test(ua)) {
callBack();
} else {
return "error";
}
};
//5 微信打开
MobilePort.wxBrowser = function (callBack) {
if (wx.test(ua)) {
callBack();
} else {
return "error";
}
};
//6 pc 平台
MobilePort.pc = function (callBack) {
if (Linux.test(ua) || windows.test(ua) || Mac.test(ua)) {
callBack();
} else {
return "error";
}
}
//7 移动平台
MobilePort.move = function (callBack) {
if (move.test(ua)) {
callBack();
} else {
return "error";
}
}
//8 androidApp
MobilePort.androidApp = function (callBack, parameter) {
var oUrl = location.search;
var tc = new RegExp(parameter);
if (android.test(ua) && tc.test(oUrl)) {
callBack();
} else {
return "error";
}
};
//9 iosApp
MobilePort.iosApp = function (callBack, parameter) {
var oUrl = location.search;
var tc = new RegExp(parameter);
if ((ipad.test(ua) || iphone.test(ua)) && tc.test(oUrl)) {
callBack();
} else {
return "error";
}
};
//10 androidWx
MobilePort.androidWx = function (callBack) {
if (android.test(ua)&&wx.test(ua)) {
callBack();
} else {
return "error";
}
};
//11 iosWx
MobilePort.iosWx = function (callBack) {
if ((ipad.test(ua)||iphone.test(ua))&&wx.test(ua)) {
callBack();
} else {
return "error";
}
};
})();
这是html 代码
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<script src="ua.js"></script>
<script>
console.log(MobilePort.back);
console.log(MobilePort);
MobilePort.androidWx(function(){
console.log("lll");
alert("")
});
MobilePort.iosWx(function(){
console.log("");
alert("")
})
</script>
</body>
</html>
UA判断打开页面的环境,然后在callBack写相应环境下的回调函数的更多相关文章
- 【方法】JS判断当前页面环境:PC端/移动端,安卓/IOS,微信环境/QQ环境等等
[主要知识] 浏览器设备信息:navigator.userAgent(本文中主要用到知识) 浏览器版本信息:navigator.appVersion var ua = navigator.userAg ...
- ES6判断当前页面是否微信浏览器中打开
1.使用jq判断是否用微信浏览器打开页面 var is_weixin = (function(){return navigator.userAgent.toLowerCase().indexOf('m ...
- Easyui datebox控件打开页面就验证解决方法
问题描述: datebox时间控件有些场景下默认值需要为空,但是为空的情况下打开页面会自动验证,十分影响美观. 实现原理: <input class="easyui-databox&q ...
- 根据打开页面加载不同Js
根据打开页面加载不同Js //根据打开页面加载不同JS $(document).ready(function(){ var href = document.URL; /*获取当前页面的URL*/ if ...
- vue项目发布后带路径打开页面报404问题
环境: 后端,python+uwsgi启动 前端:vue 用nginx运行,指定静态目录 问题 :发布后带路径打开页面报404问题,带路径打开即不是打开的主页 解决方案: https://route ...
- 【转】iframe和父页,window.open打开页面之间的引用
[转]iframe和父页,window.open打开页面之间的引用 iframe和父页,window.open打开页面和被打开页面之间的关系可以通过下面的对象获取到 1)通过iframe加载的,在if ...
- JavaScript在A页面判断B页面加载完毕(iframe load)
今天遇到一个需求,在A页面上判断B页面是否加载完毕(B页面是第三方页面),加载完毕时隐藏loading动画... 而平时我们一般做的事是在B页面上判断B页面是否加载完毕,进行操作. if(docume ...
- HTML:模拟链接被按下,在新标签页打开页面,不使用window.open(可能被拦截)
当按下一个按钮时,想打开一个新的标签页,可以使用window.open去实现但是因为使用window.open在新窗口或者新标签页中打开页面,有可能被浏览器给拦截.为了解决这个问题,可以模拟链接被按下 ...
- C# winform调用浏览器打开页面方法分享,希望对大家有帮助
在很多客户端程序中我们都需要调用浏览器打开网页,这里分享一个可以在我winform程序调用浏览器的方法,测试通过了. 声明:这个方法是上万个用户测试通过的,不是我没有测试通过就拿出来分享,那个是自己搬 ...
随机推荐
- 【51nod1563】坐标轴上的最大团 贪心
题面 坐标轴上有n个点,每个点有一个权值.第i个点的坐标是 xi ,权值是 wi .现在对这些点建图.对于点对 (i,j) ,如果 \(|xi−xj|≥wi+wj\) ,那么就给第i个点和第j个点之间 ...
- Intersection of Two Linked Lists两链表找重合节点
Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...
- phpcms分类信息地区识别跳转
<script src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"></scri ...
- innerHTML属性的内存和性能问题
使用innerHTML替换子节点可能会导致浏览器的内存占用问题,尤其是在IE中,问题更加明显.在删除带有时间处理程序或引用了其他js对象子树是,就有可能导致内存占用问题.假设某个元素有一个事件处理程序 ...
- Effective C++: 02构造、析构、赋值运算
05:了解C++默默编写并调用哪些函数 1:一个空类,如果你自己没声明,编译器就会为它声明(编译器版本的)一个copy构造函数.一个copy assignment操作符和一个析构函数.此外如果你没有声 ...
- Maven中央存储库 和 如何从Maven远程存储库下载?
当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载.首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默 ...
- SQL if语句简要
if语句 可以作为表达式用 可以在存储过程中作为流程控制语句用 表达式 IF(条件,条件true,条件false) 示例 sex字段m,f 互换 update salary set sex = if( ...
- sql —— top
用于规定要返回的记录的数目 原表: 我们如果只想看前三个学生信息的话:
- Docker 学习笔记 2019-05-27
Docker 学习笔记 2019-05-27 可以很方便的打包应用. 使用 docker-compose 更方便. 每个发行版安装方式不一样,如果 centos 直接安装很可能会安装成旧版本. Lin ...
- linux centos 一键安装环境
phpStudy for Linux 支持Apache/Nginx/Tengine/Lighttpd, 支持php5.2/5.3/5.4/5.5切换 已经在centos-6.5,debian-7.4. ...