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程序调用浏览器的方法,测试通过了. 声明:这个方法是上万个用户测试通过的,不是我没有测试通过就拿出来分享,那个是自己搬 ...
随机推荐
- LintCode_46 主元素
题目 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一. 样例 给出数组[1,1,1,1,2,2,2],返回 1 思路 首先 发现所给的数组是顺序排列好的. 用动态规划 ...
- win7下装双系统win8安装及问题
配置:笔记本 联想S510p 准备:老毛桃UEFI版 8gU盘 win8 X64系统 问题1:出现 error 10099:invalid target partition specified ...
- SQL语句问题具体什么意思呢?
SQL语句问题 底下SQL查询语法中的 as A 和 as B 是什么意思?为什么A和B不用定义就能用? 程序代码: Private Sub LoadFileList(ByVal strSub ...
- Contentprovider 注册 启动简单流程
安装app时packagemanager 读取manixfest获取provider信息 存在数据库里流程:1.加载ActivityThread main方法,创建消息队列.ActivityThrea ...
- IntelliJ Idea 复制粘贴的问题
分析 尝试从外部复制内容向Idea工作空间内粘贴文件时,有一定的几率会发生复制粘贴失败的问题:复制了新的内容,粘贴的却还是早些时候复制的旧的内容. 我使用的IDEA是最新版(2016.1.3),操作系 ...
- shared_ptr的线程安全性
一: All member functions (including copy constructor and copy assignment) can be called by multiple t ...
- 微服务开源生态报告 No.2
通常,我们都会通过在 GitHub 上订阅邮件列表,来了解社区动态.这一次,我们联合以上各开源项目的负责人,发布「微服务开源生态报告」,汇集各个开源项目近期的社区动态,帮助开发者们更高效的了解到各开源 ...
- 强制去除xcode的编译警告
使用 #pragma clang diagnostic ignored 语法来强制去除xcode的编译警告,代码举例如下: #pragma clang diagnostic push #pragma ...
- 进入BIOS中,设置U盘启动
进入BIOS中,一般有system,boot,main,advanced,security等几个选项,main是主设置界面,譬如BIOS时间等等.boot是启动项的设置,我们今天就是要用到它. 找到b ...
- UVa 10599【lis dp,记忆化搜索】
UVa 10599 题意: 给出r*c的网格,其中有些格子里面有垃圾,机器人从左上角移动到右下角,只能向右或向下移动.问机器人能清扫最多多少个含有垃圾的格子,有多少中方案,输出其中一种方案的格子编号. ...