UA判断打开页面的环境,然后在callBack写相应环境下的回调函数

Posted 简单_欣欣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UA判断打开页面的环境,然后在callBack写相应环境下的回调函数相关的知识,希望对你有一定的参考价值。

  1. (function(){
  2. /*
  3. * 使用方法:
  4. * 一、引入ua.js
  5. * 二、直接调用 MobilePort 对象的属性与方法。
  6. *
  7. * MobilePort 对象
  8. * 属性:MobilePort.back;// 数组 内容如下
  9. * 方法:MobilePort.androidBrowser(callBack) 安卓浏览器 //callBack 回调只有在安卓浏览器下执行
  10. * 方法:MobilePort.iosBrowser(callBack) ios浏览器 // 下面全部类似
  11. * 方法:MobilePort.qqBrowser(callBack) QQ浏览器
  12. * 方法:MobilePort.ucBrowser(callBack) uc浏览器
  13. * 方法:MobilePort.wxBrowser(callBack) 微信浏览器
  14. * 方法:MobilePort.pc(callBack) pc浏览器
  15. * 方法:MobilePort.move(callBack) 移动浏览器
  16. * 方法:MobilePort.androidApp(callBack, parameter) 安卓APP
  17. * 方法:MobilePort.iosApp(callBack, parameter) IOS app
  18. *
  19. * callBack 是回调函数,在指定环境下执行的函数。
  20. * parameter 是url上的参数,用于识别APP与Browser(必须),字符串。
  21. * 例如 www.baidu.com?from=app parameter 指 from=app
  22. * from=app 是前后端约定好的指代 App请求的网页。
  23. *
  24. * back数组中可能的值:内核、浏览器、移动端平台、pc端平台 、其他
  25. * webkit Trident Presto Gecko //内核 webkit内核 Trident内核 Presto内核 Gecko内核
  26. * IE chrome firefox opera safari //浏览器 IE浏览器 chrome浏览器 firefox浏览器 opera浏览器 safari浏览器
  27. * UCBrowser MQQBrowser //浏览器 UC浏览器 QQ浏览器
  28. * android ipad iphone //移动端平台 android平台 ipad平台 iphone平台
  29. * Mac windows Linux //pc端平台 Mac平台 windows平台 Linux平台
  30. * move wx //其他 move移动端平台 wx微信浏览器
  31. */

 

  1. /*
  2. * 正则赋值 内核
  3. */
  4. // webkit 内核
  5. var webkit = /webkit/i;
  6. //IE内核
  7. var Trident = /Trident/i;
  8. //opera内核
  9. var Presto = /Presto/i;
  10. //火狐内核
  11. var Gecko = /Gecko/i;
  12. /*
  13. * 正则赋值 浏览器
  14. */
  15. // chrome 浏览器
  16. var chrome1 = /chrome\/(\d+\.\d+)/i;
  17. // firefox 浏览器
  18. var firefox = /firefox\/(\d+\.\d+)/i;
  19. // opera 浏览器
  20. var opera = /opera(\/| )(\d+(\.\d+)?)(.+?(version\/(\d+(\.\d+)?)))?/i;
  21. // safari 浏览器
  22. var safari = /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i;
  23. // IE 浏览器
  24. var IE = /msie (\d+\.\d+)/i;
  25. // UC 浏览器
  26. var UCBrowser = /UCBrowser/i;
  27. //QQ浏览器
  28. var MQQBrowser = /MQQBrowser/i;
  29. /*
  30. * 正则赋值 pc端
  31. */
  32. // macintosh 系统
  33. var Mac = /macintosh/i;
  34. // windows 平台
  35. var windows = /windows/i;
  36. // Linux 平台
  37. var Linux = /Linux/i;
  38. /*
  39. * 正则赋值 移动端
  40. */
  41. // android 系统
  42. var android = /android/i;
  43. // ipad 系统
  44. var ipad = /ipad/i;
  45. // iphone 系统
  46. var iphone = /iphone/i;
  47. /*
  48. * 正则赋值 其他
  49. */
  50. // 移动终端
  51. var move =
  52. /(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;
  53. // 微信打开
  54. var wx = /MicroMessenger/i;
  55. var back = [];
  56. var ua = navigator.userAgent;
  57. //内核判断
  58. if (webkit.test(ua)) { //webkit
  59. back.push("webkit");
  60. };
  61. if (Trident.test(ua)) { //IE
  62. back.push("Trident");
  63. };
  64. if (Presto.test(ua)) { //欧朋
  65. back.push("Presto");
  66. };
  67. if (Gecko.test(ua)) { //火狐
  68. back.push("Gecko");
  69. };
  70. //浏览器 判断
  71. if (IE.test(ua)) {
  72. back.push("IE");
  73. };
  74. if (chrome1.test(ua)) {
  75. back.push("chrome");
  76. };
  77. if (firefox.test(ua)) {
  78. back.push("firefox");
  79. };
  80. if (opera.test(ua)) {
  81. back.push("opera");
  82. };
  83. if (safari.test(ua)) {
  84. back.push("safari");
  85. };
  86. if (UCBrowser.test(ua)) {
  87. back.push("UCBrowser");
  88. };
  89. if (MQQBrowser.test(ua)) {
  90. back.push("MQQBrowser");
  91. };
  92. //pc 平台判断
  93. if (Mac.test(ua)) {
  94. back.push("Mac");
  95. };
  96. if (windows.test(ua)) {
  97. back.push("windows");
  98. };
  99. if (Linux.test(ua)) {
  100. back.push("Linux");
  101. };
  102. //移动平台 判断
  103. if (android.test(ua)) {
  104. back.push("android");
  105. };
  106. if (ipad.test(ua)) {
  107. back.push("ipad");
  108. };
  109. if (iphone.test(ua)) {
  110. back.push("iphone");
  111. };
  112. //其他
  113. if (move.test(ua)) {
  114. back.push("move");
  115. };
  116. if (wx.test(ua)) {
  117. back.push("wx");
  118. };
  119. MobilePort = {};
  120. //back 包含所有信息
  121. MobilePort.back = back;
  122. //android 浏览器
  123. MobilePort.androidBrowser = function (callBack) {
  124. if (android.test(ua)) {
  125. callBack();
  126. } else {
  127. return "error";
  128. }
  129. };
  130. //ios 浏览器
  131. MobilePort.iosBrowser = function (callBack) {
  132. if (ipad.test(ua) || iphone.test(ua)) {
  133. callBack();
  134. } else {
  135. return "error";
  136. }
  137. };
  138. // QQ 浏览器
  139. MobilePort.qqBrowser = function (callBack) {
  140. if (MQQBrowser.test(ua)) {
  141. callBack();
  142. } else {
  143. return "error";
  144. }
  145. };
  146. // UC 浏览器
  147. MobilePort.ucBrowser = function (callBack) {
  148. if (UCBrowser.test(ua)) {
  149. callBack();
  150. } else {
  151. return "error";
  152. }
  153. };
  154. // 微信打开
  155. MobilePort.wxBrowser = function (callBack) {
  156. if (wx.test(ua)) {
  157. callBack();
  158. } else {
  159. return "error";
  160. }
  161. };
  162. // androidApp
  163. MobilePort.androidApp = function (callBack, parameter) {
  164. var oUrl = location.search;
  165. var tc = new RegExp(parameter);
  166. if (android.test(ua) && tc.test(oUrl)) {
  167. callBack();
  168. } else {
  169. return "error";
  170. }
  171. };
  172. //iosApp
  173. MobilePort.iosApp = function (callBack, parameter) {
  174. var oUrl = location.search;
  175. var tc = new RegExp(parameter);
  176. if ((ipad.test(ua) || iphone.test(ua)) && tc.test(oUrl)) {
  177. callBack();
  178. } else {
  179. return "error";
  180. }
  181. };
  182. // pc 平台
  183. MobilePort.pc = function (callBack) {
  184. if (Linux.test(ua) || windows.test(ua) || Mac.test(ua)) {
  185. callBack();
  186. } else {
  187. return "error";
  188. }
  189. }
  190. //移动平台
  191. MobilePort.move = function (callBack) {
  192. if (move.test(ua)) {
  193. callBack();
  194. } else {
  195. return "error";
  196. }
  197. }
  198. })();

以上是关于UA判断打开页面的环境,然后在callBack写相应环境下的回调函数的主要内容,如果未能解决你的问题,请参考以下文章

JS判断页面是在浏览器还是微信打开

判断当前是否在微信浏览器环境

user agent是啥意思,有啥用啊?

判断当前页面是否在微信浏览器中打开

判断当前页面是否在微信浏览器中打开

根据浏览器判断是否为Androidios或微信环境