1. 程式人生 > >app內嵌H5網頁(webviewJavaScriptBridge)

app內嵌H5網頁(webviewJavaScriptBridge)

mod isp pty splay web ons 引入 回調 register

摘要:使用的插件為webviewJavaScriptBridge,app端需要引入一下這個包,html頁面只需一段JS代碼

與IOS交互

<! 申明交互(此處代碼固定) >

function setupWebViewJavascriptBridge(callback) {

if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }

if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }

window.WVJBCallbacks = [callback];

var WVJBIframe = document.createElement(‘iframe‘);

WVJBIframe.style.display = ‘none‘;

WVJBIframe.src = ‘https://__bridge_loaded__‘;

document.documentElement.appendChild(WVJBIframe);

setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)

}

<!-- 處理交互  方法名要和ios內定義的對應-->

setupWebViewJavascriptBridge(function(bridge) {

bridge.registerHandler("showAlert", function(data) { //ios調用js方法

alert(data+",54646")

});

bridge.callHandler(‘objcEchoToJs‘, { foo:‘bar‘ }, function(response) { //js調用ios方法

               alert(‘收到回調:‘+response)

})

})

與android交互

<! 申明交互(此處代碼固定) >

function connectWebViewJavascriptBridge(callback) {

if (window.WebViewJavascriptBridge) {

callback(WebViewJavascriptBridge)

} else {

document.addEventListener(‘WebViewJavascriptBridgeReady‘, function() {

callback(WebViewJavascriptBridge)

},false);

}

}

<!-- 處理交互  方法名要和android內定義的對應-->

connectWebViewJavascriptBridge(function(bridge) {

bridge.registerHandler("functionInJs", function(data, responseCallback) { //android調用js方法

alert(data);

});

bridge.callHandler(‘objcEchoToJs‘, {‘param‘: data } , function(responseData) { //js調用android方法

alert(responseData);

});

})

總結:交互聲明代碼固定,交互接口與IOS/android對應好即可(附:前端的registerHandler方法接口對應他們的callHandler,callHandler方法接口對應他們的registerHandler)

app內嵌H5網頁(webviewJavaScriptBridge)