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

                                                                             字太難看,不想動筆,此章為印,加深記憶,往后若遇,來此考古。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM