android webview
js调用java的方式
1.java通过注解@JavascriptInterface导出方法, js通过window.别名.方法名调用方法
2.拦截url方式,通过shouldOverrideUrlLoading实现
java调用js的方式
1.webview.loadUrl, 可以通过回调实现获取返回值
2.webview.evaluateJavascript 4.4及以上版本才能使用
3.通过反射实现stringByEvaluatingJavaScriptFromString方法
离线缓存
通过shouldInterceptRequest来实现
IOS UIWebview
js调用objc
1.拦截url方式,webview:shouldStartLoadWithRequest:navigationType
2.通过JavascriptCore实现
objc调用js
1.stringByEvaluatingJavaScriptFromString
2.JavaScriptCore
离线缓存
通过NSURLProtocol拦截请求
https://github.com/marcuswestin/WebViewProxy
https://developer.apple.com/library/content/samplecode/CustomHTTPProtocol/Introduction/Intro.html
http://draveness.me/intercept/
IOS WKWebview
js调用objc
1.拦截url方式,通过webview:decidePolicyForNavigationAction:decisionHandler实现
2.MessageHandler
objc调用js
1.evaluateJavaScript:completionHandler
离线缓存
通过NSURLProtocol拦截请求
https://github.com/yeatse/NSURLProtocol-WebKitSupport
其它
jsbridge和webviewjavascriptbridge本质上就是拦截url方式来实现的。