摘要:全局配置信息區域全局配置信息,方便配置工具函數定義區域全局注冊唯一的客戶端函數,給端去調用客戶端必須包括處理有回調的情況下后面有用發送數據函數拼接處理使用發起給端兼容用安卓發太快有問題封裝分享按鈕的函數具體的場景去調用函數是返回的數據根據
全局配置信息區域
// 全局配置信息,方便配置 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
摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內容若有問題煩請即時告知我予以修改,以免誤導更多人。把一個邏輯值轉換為字符串,并返回結果。注冊后,可直接調用的接口,并獲取的返回值。 個人博客已上線,歡迎前去訪問評論!無媛無故 - wangchloe的個人博客 以下內容若有問題煩請即時告知我予以修改,以免誤導更多人。 toString() && valueOf() JSON ...
摘要:個人博客已上線,歡迎前去訪問評論無媛無故的個人博客以下內容若有問題煩請即時告知我予以修改,以免誤導更多人。把一個邏輯值轉換為字符串,并返回結果。注冊后,可直接調用的接口,并獲取的返回值。 個人博客已上線,歡迎前去訪問評論!無媛無故 - wangchloe的個人博客 以下內容若有問題煩請即時告知我予以修改,以免誤導更多人。 toString() && valueOf() JSON ...
閱讀 728·2021-11-24 10:19
閱讀 1105·2021-09-13 10:23
閱讀 3428·2021-09-06 15:15
閱讀 1776·2019-08-30 14:09
閱讀 1680·2019-08-30 11:15
閱讀 1836·2019-08-29 18:44
閱讀 932·2019-08-29 16:34
閱讀 2455·2019-08-29 12:46