iOS于webview的交互是比较困难的,不过这里有一个第三方库可以使得IOS与JS进行交互,那就是WebViewJavascriptBridge,可以直接从GitHub上面下载。现在简要说一下怎么使用。
这个需要网页和ios相互配合才能使用,ios端的比较简单,网页端也不难,只不过我不懂罢了。。。
<script> window.onerror = function(err) { log('window.onerror: ' + err) } function connectWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBridge) { callback(WebViewJavascriptBridge) } else { document.addEventListener('WebViewJavascriptBridgeReady', function() { callback(WebViewJavascriptBridge) }, false) } } connectWebViewJavascriptBridge(function(bridge) { var uniqueId = 1 bridge.init(function(message, responseCallback) { /*log('JS got a message', message)*/ var data = {'Javascript Responds':'Wee!'} /*log('JS responding with', data)*/ responseCallback(data) } ) document.body.appendChild(document.createElement('br')) var callbackButton = document.getElementById('test') callbackButton.onclick = function(e) { e.preventDefault() /*log('JS calling handler "testObjcCallback"')*/ bridge.callHandler('testObjcCallback', {'foo': 'bar'}, function(response) { /*log('JS got response', response)*/ }) } }) </script>这是对应的js端的代码
[WebViewJavascriptBridge enableLogging];
_bridge = [WebViewJavascriptBridge bridgeForWebView:_Show webViewDelegate:self handler:^(id data, WVJBResponseCallback responseCallback) {
responseCallback(@"Response for message from ObjC");
}];
[_bridge registerHandler:@"testObjcCallback" handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"Get Message");
responseCallback(@"Response from testObjcCallback!@#$");
}];