一、通過用戶代理可以判斷網頁當前所在的環境
var browser={
versions:function(){
var u = navigator.userAgent, app = navigator.appVersion;
return {
trident: u.indexOf('Trident') > -1, //IE
presto: u.indexOf('Presto') > -1, //opera
webKit: u.indexOf('AppleWebKit') > -1, //webkit
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //firefox
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //mobile
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android or uc
iPhone: u.indexOf('iPhone') > -1 , //iPhone QQHD
iPad: u.indexOf('iPad') > -1, //iPad
webApp: u.indexOf('Safari') == -1
};
}(),
language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
function iOS7() {
if (/iP(hone|od|ad)/.test(navigator.platform)) {
var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
var vers = [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
if(vers[0] >=7)
return true;
return false;
}
return false;
}
H5與IOS的交互(javascriptBrige)
if(browser.versions.ios){
//js必寫
var connectWebViewJavascriptBridge = function(callback){
if (window.WebViewJavascriptBridge) {
callback(WebViewJavascriptBridge)
} else {
document.addEventListener('WebViewJavascriptBridgeReady', function() {
callback(WebViewJavascriptBridge)
}, false)
}
if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
window.WVJBCallbacks = [callback];
var WVJBIframe = document.createElement('iframe');
WVJBIframe.style.display = 'none';
WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
document.documentElement.appendChild(WVJBIframe);
setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
};
connectWebViewJavascriptBridge(function(bridge){
bridge.registerHandler("ToAppPayCallback", function(data, responseCallback) {
// alert("原生返回結果"+data.appPayResult);
$(".loading").css("display","none");
if(data.appPayResult){
window.location.href="./V1/pay/index.html?orderID="+orderID;
}else{
makeToast("支付失敗");
}
//alert("H5注冊的方法,原生執行");
//alert("原生返回的結果為"+data.appPayResult);
//alert(data);
//alert(responseCallback);
});
submitOrder();
})
function submitOrder(){
if(appPay){
var params = {orderID:orderID,payWay:payWay};
// Log.log("try to call ios native to add image");
if (window.WebViewJavascriptBridge) {
WebViewJavascriptBridge.callHandler('ToAppPay', params, function (response) {
// Log.log("call native to upload image");
// alert(response);
/* if(response)*/
});
}
}
}
}
H5與安卓做交互(通過攔吐司事件完成交互)
if(browser.versions.android ){
//安卓的回調
//var params = {orderID:orderID,payWay:payWay};
var androidPayWay=$(".payWay").find("input:radio:checked").val();
// alert(androidPayWay);
if(androidPayWay==1){
mAndroid.showToastWithParams(1,orderID); //通過定義安卓的吐司傳給安卓兩個或者多個值
}else if(androidPayWay==2){
mAndroid.showToastWithParams(2,orderID);
}
}
//安卓的回調(安卓通過攔截,監聽到事件之后,可以執行js在全局下定義的函數)
function getAndroidResult(result,curOrderId){ //傳入的兩個值,為安卓的返回
if(result==1){
// window.location.href="./V1/pay/index.html?orderID="+curOrderId;
window.location.href="./mySignUp.html";
}else if(result==2){
makeToast("支付失敗");
// $(".payWayBtns").css("display","none");
window.location.reload();
}
}
名詞解釋
Navigator對象主要是包含有關客戶端瀏覽器的一些信息,Navigator對象是由JavaScript runtime engine自動創建的,但是目前沒有針對於navigator對象的公開標
准,不過目前所有瀏覽器都支持該對象。
Navigator目前主要用於區分安卓、ios、微信等
userAgent屬性是一個只讀的字符串,申明瀏覽器用於HTPP請求的用戶代理頭的值,簡單點說其實就是通過UserAgent可以取得瀏覽器類別、版本,客戶端操作系統等信息
//判斷瀏覽器的版本 判斷是否是微信瀏覽器
function is_weixin(){
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i)=="micromessenger") {
return true;
} else {
return false;
}
}
//判斷是否為移動設備
function isMobile(){
if(/android/i.test(navigator.userAgent)){
//document.write("This is Android'browser.");//這是Android平台下瀏覽器
return true;
}
if(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)){
//document.write("This is iOS'browser.");//這是iOS平台下瀏覽器
return true;
}
if(/Linux/i.test(navigator.userAgent)){
//document.write("This is Linux'browser.");//這是Linux平台下瀏覽器
return true;
}
if(/Linux/i.test(navigator.platform)){
//document.write("This is Linux operating system.");//這是Linux操作系統平台
return true;
}
if(/MicroMessenger/i.test(navigator.userAgent)){
//document.write("This is MicroMessenger'browser.");//這是微信平台下瀏覽器
return true;
}
return false;
}
