Navigator對象主要是包含有關客戶端瀏覽器的一些信息,Navigator對象是由JavaScript runtime engine自動建立的,可是目前沒有針對於navigator對象的公開標瀏覽器
準,不過目前全部瀏覽器都支持該對象。微信
目前我所接觸到的業務都是根據這些屬性的不一樣區分不一樣的入口,好比要區分是IOS仍是Android客戶端進行訪問的,或者是區分是不是微信訪問的等等。spa
userAgent屬性是一個只讀的字符串,申明瀏覽器用於HTPP請求的用戶代理頭的值,簡單點說其實就是經過UserAgent能夠取得瀏覽器類別、版本,客戶端操做系統等信息。操作系統
具體展現:代理
/** * 獲取操做系統類型, * 0 Android * 1 iOS * */ function getOSType() { if (/(Android)/i.test(navigator.userAgent)) { return 0; } else if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { return 1; } else { return 2; } }
//js判斷當前環境是不是微信環境 function is_weixin(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="micromessenger") { return true; } else { return false; } }
/** * 注:我遇到的業務場景是將此方法放到攔截器中,在須要區分是不是微信的Controller方法上加此註解 * @Description: TODO(經過用戶版本號判斷是否爲微信請求,版本號爲0則爲非微信請求) */ public int isWx(BeatContext beat) { int userWeixinVersionCode = 0; try { String userAgent = beat.getRequest().getHeader("User-Agent"); if (userAgent == null) { log.info("微信攔截器:未獲取到User-Agent:" + userAgent); userAgent = new String(); } if (userAgent.indexOf("MicroMessenger") >= 0) { String weixinVersion = userAgent.substring(userAgent.indexOf("MicroMessenger") + 15); weixinVersion = weixinVersion.substring(0, weixinVersion.indexOf(".")); userWeixinVersionCode = Integer.parseInt(weixinVersion); } // 將是否微信信息傳遞至下一頁面 if (userWeixinVersionCode != 0) { beat.getModel().add("isWeixin", true); beat.getModel().add("userWeixinVersionCode", userWeixinVersionCode); } else { beat.getModel().add("isWeixin", false); } } catch (NumberFormatException e) { beat.getModel().add("isWeixin", false); log.error("用戶微信版本信息獲取失敗", e); } return userWeixinVersionCode; } }