- Android ```javascript // 注:传参上由于安卓不能接收或发送对象参数,所以需要把对象改为JSON字符串 JSON.stringify() JSON.parse()
// h5调用android方法 由安卓注入Android这个对象(该对象名可随意由安卓定义),即可全局使用 Android.method();
// android调用h5方法 h5挂载方法到window对象里 // h5注册 window.method();
// android调用 String method = “javascript:method()”; webView.loadUrl(method);
- Ios```javascript// 方式1 h5端跳转链接, ios端拦截链接,此方法无返回值window.open('link', '_self');// 方式2 WebViewJavascriptBridge// 注入WebViewJavascriptBridgefunction setupWebViewJavascriptBridge(ck: Ck): void {if (window.WebViewJavascriptBridge) {return ck(window.WebViewJavascriptBridge);}if (window.WVJBCallbacks) {return window.WVJBCallbacks.push(ck);}window.WVJBCallbacks = [ck];let iframe: any = document.createElement('iframe');iframe.style.display ='none';iframe.src ='wvjbscheme://__BRIDGE_LOADED__';document.documentElement.appendChild(iframe);setTimeout(() => {document.documentElement.removeChild(iframe);}, 0);}// h5调用ios方法function callHandler(name: string, data: any, ck: (e?: any, ...rest: any[]) => void): void {setupWebViewJavascriptBridge(bridge => {bridge.callHandler(name, data, ck);});}// 调用示例callHandler('method', query, e => {// done});// 为ios注册方法,ios端调用function registerHandler(name: string, ck: (e?: any, ...rest: any[]) => void): void {setupWebViewJavascriptBridge(bridge => {bridge.registerHandler(name, ck);});}//注册示例registerHandler('method', e => {// done})
