最近用到了 WebViewJavascriptBridge这个库来与JS交互。
由于没用过js,也没有什么web端的开发经验,竟然一直对这库的原理表示不解,面试时候被问及,囧了好久。
为了弥补下我受伤的心灵,特此写下此贴。
UIWebView交互JS,很简单,直接调用webView的API,[webViewstringByEvaluatingJavaScriptFromString:@""];
就可以实现调用js的代码。原理应该是在页面中提前注入了类似于delegate的js代码,然后通过调用bridge的js代码来运行部署于页面内的函数。
至于JS交互UIWebView,是通过实现webView的delegate,通过在
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
中识别出自定义的URL区分处理,就可以读取到JS的消息啦
看了源码后感觉实现原理挺简单的,感觉自己的经验还是不足呀。