zoukankan      html  css  js  c++  java
  • app内嵌h5页面:判断客户端

    在web前端开发中,很多时候都需要和原生app开发人员来交互,或者有很多需要兼容的地方,甚至为了规避移动端各种无端报错,或者其中一端报错等等问题:

      首先就是最常用遇到app开发中的安卓与iOS:

      (1)安卓与iOS因为操作系统不同,从调用其中的方法就需要知道h5页面到底位于哪一端,下面就是判断操作系统来分辨两者:

     1 var u = navigator.userAgent;
     2 
     3 var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
     4 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
     5     if(isAndroid){
     6                console.log("调用Android方法")
     7            window.android.function();
     8     }else if(isiOS){
     9                console.log("调用iOS方法")
    10                window.webkit.messageHandlers.***.function();
    11     }

      

      (2)判断是移动端浏览器打开还是PC端浏览器打开:

     1 if(/(iPhone|iPad|iPod|iOS|Android)/i.test(navigator.userAgent)) {
     2 //移动端打开
     3 console.log("手机端打开执行")
     4 
     5 } else {
     6 
     7 //pc端打开
     8 console.log("PC端打开执行")
     9 
    10 }

      (3)判断微信、qq、还是微博内部打开(微信内置浏览器与qq内置浏览器 与微博内置浏览器 ):

     1 function is_weixn_qq() {
     2 
     3     var ua = navigator.userAgent.toLowerCase();
     4 
     5     if(ua.match(ua.match(/MicroMessenger/i) == "micromessenger")) {
     6         // 下面是我在网上复制别人的代码,其中的展示引导图根据自己项目需求做就可以(下面三者都可)
     7         $('#weixin-tip').show();//微信引导图(点击右上角按钮选择浏览器打开);
     8 
     9         return true;
    10 
    11     }
    12 
    13     if(ua.match(/QQ\/[0-9]/i)) {
    14 
    15         $('#weixin-tip').show();//qq引导图(点击右上角按钮选择浏览器打开);
    16 
    17         return true;
    18 
    19     }
    20 
    21      if (ua.match(/WeiBo/i) == "weibo") {
    22 
    23          //在新浪微博客户端打开
    24 
    25          return true;
    26 
    27      }
    28 
    29     return false;
    30 
    31 }

      (4)日常功能的实现:进入页面时,根据不同情景后端会在当前页面url后面拼接参数,利用获取不同参数实现不同前端展示或逻辑:

     1 获取当前url通用方法:
     2 
     3 function getQueryString(name) {
     4 
     5     var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
     6 
     7     var r = window.location.search.substr(1).match(reg);
     8 
     9     if(r != null)
    10 
    11     return decodeURIComponent(r[2]);
    12 
    13     return null;
    14 
    15 }
    16 
    17 var a = getQueryString('a') ? getQueryString('a') : ''; //a为拼接的参数名
    18 
    19 if(a == 1) {
    20 
    21     $('.myfooter').show();
    22 
    23     $('.box').css('padding-bottom', '1.4rem');
    24 
    25 } else {
    26 
    27     $('.myfooter').hide();
    28 
    29     $('.box').css('padding-bottom', '0');
    30 
    31 }

      关于第四点,因为本人对于正则并不懂,所以就封装了一个获取url参数js:

     1 var getUrlParams = function(){
     2        //因为对于内嵌页面来说,基本上传参都是拼接url,所以这里直接获取url,query的参数
     3        //获取url参数
     4        var query = window.location.search.substring(1);
     5        //每个参数键值对
     6        var vars = query.split("&");
     7        //创建一个对象来接收这些键值对
     8        var json = {}
     9 
    10        for (var i=0;i<vars.length;i++) {
    11                // 循环中,以“=”来截断键与值
    12                var pair = vars[i].split("=");
    13                // 赋值
    14                json[pair[0]] = pair[1]
    15        }
    16        //返回
    17        return json;
    18 }

      这样就清楚多了,根据自己的喜好来。

       参考链接:https://www.jianshu.com/p/6a43508957d2

                                                                                 字太难看,不想动笔,此章为印,加深记忆,往后若遇,来此考古。

  • 相关阅读:
    JavaScript内置函数
    JavaScript内置函数
    javascript入门之算术乘法表
    第三章 3 python运算符的优先级
    第三章 2 pyhon中的运算符
    第三章 1 input输入函数
    第二章 5 python中的注释
    第二章 4 数据类型的转换
    第二章 3 数据类型
    第二章 2 python中的标识符和保留字
  • 原文地址:https://www.cnblogs.com/chenghuayike/p/12518499.html
Copyright © 2011-2022 走看看