国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

h5與native的通信函數,基于url schema的做法

tolerious / 1951人閱讀

摘要:全局配置信息區域全局配置信息,方便配置工具函數定義區域全局注冊唯一的客戶端函數,給端去調用客戶端必須包括處理有回調的情況下后面有用發送數據函數拼接處理使用發起給端兼容用安卓發太快有問題封裝分享按鈕的函數具體的場景去調用函數是返回的數據根據

全局配置信息區域

// 全局配置信息,方便配置
var hxsConfigBridge = {
    globalBridgeName:"hxsHybrid",
    globalBridgeObject:"hxsNativeBride"
}

工具函數定義區域

window[hxsConfigBridge.globalBridgeName] =  window[hxsConfigBridge.globalBridgeName] || {};


//全局注冊唯一的客戶端函數,給app端去調用客戶端
function requestHybrid ( params){

    if (! params.tagName ){
        alert("必須包括tagName");
        return;
    }

    var tt = (new Date().getTime() ) + "_"+ Math.random() + "_";

    var t = hxsConfigBridge.globalBridgeName +"_"+ params.tagName + "_" + tt;
    
    var tmpFn;

    //處理有回調的情況下
    if( params.callback ){
        tmpFn = params.callback;
        // 后面有用
        params.callbackT = t;

        window[hxsConfigBridge.globalBridgeName][t] = function (data){
            tmpFn( data)
        }
        
    }
    // 發送數據函數
    bridgePostMsg( params )
}

// 拼接處理Url
function getHybridUrl( params ){
    var k,paramStr = "",
    url = hxsConfigBridge.globalBridgeName +"://"+params.tagName,
    flag = "?";
    if( params.callback ){
        flag = "&";
        url += "?callback="+ params.callbackT
    }

    if( params.param ){
        if ( typeof params.param == "object" ){
            paramStr = JSON.stringify(params.param)
        }
        
        url = url + flag +  "param="+ encodeURIComponent(paramStr );
    }

    // hxsHybrid://?callback=callbackId
    return url;
}

// 使用iframe發起 url schema 給app端
function bridgePostMsg ( params){

    var url = getHybridUrl( params);

    //兼容ios6 用 iframe
    var ifr = document.createElement("iframe");  
    ifr.id = params.callbackId; 
    ifr.src = url;   
    ifr.onload = function() {   
        console.log("iframe onload loaded");   
    };
    
    if( navigator.userAgent.indexOf("Android") > -1 ){
        // 安卓發太快 有問題
        setTimeout(function(){
            document.body.appendChild(ifr);  
        },10)
    }else{
        document.body.appendChild(ifr);  
    }
    
    setTimeout(function(){
        document.body.appendChild(ifr);  
        ifr.remove();
        ifr = null;
    },1000)

}


// 封裝分享按鈕的函數
window[hxsConfigBridge.globalBridgeObject] =  window[hxsConfigBridge.globalBridgeObject] || {};

window[hxsConfigBridge.globalBridgeObject].shareBtnInApp = function (param = {}, callback) {
    requestHybrid({
        tagName:"shareBtnInApp",
        param:param,
        callback:function(data){
            callback(data)
        }
    })
}

-----------------

具體的場景去調用 shareBtnInApp函數

var __param = {
   name:"wwb",
   age:32 
}
window[hxsConfigBridge.globalBridgeObject].shareBtnInApp( __param, function(data){
    // data是app返回的數據
    // 根據app返回的data數據格式來處理業務

    // {
    //     code:200,
    //     data:{
    //         name:"jerry",
    //         work:"前端開發"
    //     }
    // }

    if(data.code == 200){
        alert("回調成功了")
    }
})

參考:
https://www.imooc.com/learn/850

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90125.html

相關文章

  • 每天10個前端知識點:雜技

    摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內容若有問題煩請即時告知我予以修改,以免誤導更多人。把一個邏輯值轉換為字符串,并返回結果。注冊后,可直接調用的接口,并獲取的返回值。 個人博客已上線,歡迎前去訪問評論!無媛無故 - wangchloe的個人博客 以下內容若有問題煩請即時告知我予以修改,以免誤導更多人。 toString() && valueOf() JSON ...

    dongfangyiyu 評論0 收藏0
  • 每天10個前端知識點:雜技

    摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內容若有問題煩請即時告知我予以修改,以免誤導更多人。把一個邏輯值轉換為字符串,并返回結果。注冊后,可直接調用的接口,并獲取的返回值。 個人博客已上線,歡迎前去訪問評論!無媛無故 - wangchloe的個人博客 以下內容若有問題煩請即時告知我予以修改,以免誤導更多人。 toString() && valueOf() JSON ...

    marser 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<