APP与H5交互封装方法 - xiaogardenz/Work GitHub Wiki

H5交互中间处理函数

H5_TYPE(1:网页;2:AndroidWeb;3:iPhoneWeb;)

function jsToApp(h5_type,func_name,data){
    data=((data!="" || parseInt(data) == 0) && typeof (data)!= "undefined")?data:"";
    //安卓
    if(h5_type=="2"){
        switch(func_name){
            case "navigationHidden":
                window.mMallClient.navigationHidden();
                break;
            case "setTitle":
                window.mMallClient.setTitle(data);
                break;
            case "closeWebView":
                window.mMallClient.closeWebView();
                break;
            case "payPage":
                var payment_code=getCookie('payment_code');
                var balance=getCookie('balance');
                window.mMallClient.payPage(data,payment_code,balance);
                break;
            case "loginPage":
                window.mMallClient.loginPage();
                break;
            case "removeCurrentView":
                window.mMallClient.removeCurrentView();
                break;
            case "phone":
                window.mMallClient.phone(data);
                break;
            case "openHomeTab":
                window.mMallClient.openHomeTab(data);
                break;
            case "goodsDetail":
                if(_HTTP_APPVERSION_==undefined||_HTTP_APPVERSION_=='Android'){
                    window.mMallClient.goodsDetail(data[0],data[1]);
                }else{
                    window.mMallClient.goodsDetail(data[0],data[1],data[2]);
                }
                break;
            case "getLastUrl":
                var last_url=window.mMallClient.getLastUrl();
                return last_url;
                break;
            case "showUploadImg":   //上传图片
                var img_url=window.mMallClient.showUploadImg();
                return img_url;
                break;
        }
    }
    //ios
    if(h5_type=="3"){
        switch(func_name){
            case "payPage":
                setupWebViewJavascriptBridge(function(bridge) {
                    bridge.registerHandler(func_name, function(data, responseCallback) {
                        console.log("JS Echo called with:", data);
                        responseCallback(data)
                    })
                    bridge.callHandler(func_name, {'orderid':data,'payType':getCookie('payment_code'),'balance':getCookie('balance')}, function responseCallback(responseData) {
                        console.log("JS received response:", responseData)
                    })
                })
                break;
            case "phone":
                setupWebViewJavascriptBridge(function(bridge) {
                    bridge.registerHandler(func_name, function(data, responseCallback) {
                        console.log("JS Echo called with:", data)
                        responseCallback(data)
                    })
                    bridge.callHandler(func_name, {'phone':data}, function responseCallback(responseData) {
                        console.log("JS received response:", responseData)
                    })
                })
                break;
            case "openHomeTab":
                setupWebViewJavascriptBridge(function(bridge) {
                    bridge.registerHandler(func_name, function(data, responseCallback) {
                        console.log("JS Echo called with:", data)
                        responseCallback(data)
                    })
                    bridge.callHandler(func_name, {'index':data}, function responseCallback(responseData) {
                        console.log("JS received response:", responseData)
                    })
                })
                break;
            case "goodsDetail":
                setupWebViewJavascriptBridge(function(bridge) {
                    bridge.registerHandler(func_name, function(data, responseCallback) {
                        console.log("JS Echo called with:", data)
                        responseCallback(data)
                    })
                    bridge.callHandler(func_name, {'goodsid':data[0],'goodsType':data[1],'buyStoreId':data[2]}, function responseCallback(responseData) {
                        console.log("JS received response:", responseData)
                    })
                })
                break;
            case "removeCurrentView":
                setupWebViewJavascriptBridge(function (bridge) {
                    bridge.registerHandler(func_name, function (data, responseCallback) {
                        console.log("JS Echo called with:", data)
                        responseCallback(data)
                    })
                    bridge.callHandler(func_name, {}, function responseCallback(responseData) {
                        console.log("JS received response:", responseData)
                    })
                })
                break;
            case "getLastUrl":
                setupWebViewJavascriptBridge(function(bridge) {

                    bridge.callHandler(func_name, {},  function responseCallback(responseData) {
                        console.log("JS received response:", responseData)
                        // mui.toast(responseData)
                        // setTimeout(function(){
                        //     locationHref(responseData, data)
                        // },3000);
                        if(responseData!=null){
                            _IOS_LAST_URL_=responseData;
                        }
                        //locationHref(responseData, data)

                    })
                })
                break;
            default :
                setupWebViewJavascriptBridge(function(bridge) {
                    bridge.registerHandler(func_name, function(data, responseCallback) {
                        console.log("JS Echo called with:", data)
                        responseCallback(data)
                    })
                    bridge.callHandler(func_name, {'key':'value'}, function responseCallback(responseData) {
                        console.log("JS received response:", responseData)
                    })
                })
                break;
        }
    }
}