美文网首页
WebviewBridge

WebviewBridge

作者: alex_zn | 来源:发表于2018-07-19 14:35 被阅读0次

html 页面

    //1 申请交互
  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)
    }
    //注册 回调
    setupWebViewJavascriptBridge(function(bridge) {

        <!--oc -> js -->
       bridge.registerHandler('testJavascriptHandler', function(data, responseCallback) {
                               
            alert("收到Native的通知")
            var responseData = { 'Javascript Says':'Right back atcha!----' }
            responseCallback(responseData)
        })

        <!--js -> oc -->
        var callbackButton = document.getElementById('btn')
        callbackButton.onclick = function(e) {
                                 bridge.callHandler('jsToOc2', {'foo': 'bar'}, function(response) {
                        //执行js操作
            })
        }
        
        

native 代码


    //1,js -> oc
   _bridge = [WebViewJavascriptBridge bridgeForWebView:webView];
    [_bridge registerHandler:@"jsToOc" handler:^(id data, WVJBResponseCallback responseCallback) {
        
        
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"通知" message:@"js 调用 oc 方法" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        
        
        [alert show];
        responseCallback(@"Response from testObjcCallback");
    }];
    
//2,oc -> js
    [callbackButton addTarget:self action:@selector(callHandler:) forControlEvents:UIControlEventTouchUpInside];
    
    
    btn.bk_whenTap({^(UIButton *btn)
        
        
    id data = @{ @"greetingFromObjC": @"这是Native" };
    [_bridge callHandler:@"testJavascriptHandler" data:data responseCallback:^(id response) {
        
        NSLog(@"testJavascriptHandler responded: %@", response);
    }];
}

相关文章

网友评论

      本文标题:WebviewBridge

      本文链接:https://www.haomeiwen.com/subject/nmrtmftx.html