https://github.com/marcuswestin/WebViewJavascriptBridge github地址如上 工作中用到了這個橋接,出現了很多問題, 首先,初始化了這個函數之後,然後調用這個函數,調用ios端定義的handler或者js 註冊自己的handler, 但是好像不 ...
https://github.com/marcuswestin/WebViewJavascriptBridge
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) } Finally, call setupWebViewJavascriptBridge and then use the bridge to register handlers and call ObjC handlers: setupWebViewJavascriptBridge(function(bridge) { /* Initialize your app here */ bridge.registerHandler('JS Echo', function(data, responseCallback) { console.log("JS Echo called with:", data) responseCallback(data) }) bridge.callHandler('ObjC Echo', {'key':'value'}, function responseCallback(responseData) { console.log("JS received response:", responseData) }) })
github地址如上
工作中用到了這個橋接,出現了很多問題,
首先,初始化了這個函數之後,然後調用這個函數,調用ios端定義的handler或者js 註冊自己的handler,
但是好像不可以寫多個該函數的調用,否則所有寫的交互不生效。
那麼我如果想調用ios定義的多個函數,只能寫在一個調用里,羅列多個
bridge.registerHandler
和
bridge.callHandler來寫了。
目前還是出現了個別交互不生效的問題。
registerHandler 就是在網頁端定義一個函數,獲取後端返回的相應參數,後端調用使用
callHandler 就是在ios端定義一個函數,網頁端調用,傳過去相應參數。
我的博客即將搬運同步至騰訊雲+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=dd4qxupt8clk