• 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);

    1. - Ios
    2. ```javascript
    3. // 方式1 h5端跳转链接, ios端拦截链接,此方法无返回值
    4. window.open('link', '_self');
    5. // 方式2 WebViewJavascriptBridge
    6. // 注入WebViewJavascriptBridge
    7. function setupWebViewJavascriptBridge(ck: Ck): void {
    8. if (window.WebViewJavascriptBridge) {
    9. return ck(window.WebViewJavascriptBridge);
    10. }
    11. if (window.WVJBCallbacks) {
    12. return window.WVJBCallbacks.push(ck);
    13. }
    14. window.WVJBCallbacks = [ck];
    15. let iframe: any = document.createElement('iframe');
    16. iframe.style.display ='none';
    17. iframe.src ='wvjbscheme://__BRIDGE_LOADED__';
    18. document.documentElement.appendChild(iframe);
    19. setTimeout(() => {
    20. document.documentElement.removeChild(iframe);
    21. }, 0);
    22. }
    23. // h5调用ios方法
    24. function callHandler(name: string, data: any, ck: (e?: any, ...rest: any[]) => void): void {
    25. setupWebViewJavascriptBridge(bridge => {
    26. bridge.callHandler(name, data, ck);
    27. });
    28. }
    29. // 调用示例
    30. callHandler('method', query, e => {
    31. // done
    32. });
    33. // 为ios注册方法,ios端调用
    34. function registerHandler(name: string, ck: (e?: any, ...rest: any[]) => void): void {
    35. setupWebViewJavascriptBridge(bridge => {
    36. bridge.registerHandler(name, ck);
    37. });
    38. }
    39. //注册示例
    40. registerHandler('method', e => {
    41. // done
    42. })