史上最全的 UIWebview 的 JS 与 OC 交互

495 查看

其实一直想给大家整理一下JS与OC的交互,但是没有合适的机会,今天借着微信小应用的发布,以及以后H5必定越来越流行,所以给大家整理一下.

交互方式有三种:

  • 1.UIWebviewDelegate
  • 2.JavaScriptCore
  • 3.WebViewJavascriptBridge
    按照排序给大家介绍一下,我推荐前两种方法,第三种需要依赖第三方框架,并且不一定能拦截成功,所以着重介绍前两种,第三种知道怎么操作就行了

1.UIWebviewDelegate

第一种也是最简单的一种,我在实际项目中就用的这个方法,根据UIWebviewDelegate的代理方法进行拦截

112146418-8f21b21f67038689

点击新闻按钮,根据shouldStartLoadWithRequest这个方法,打印出返回的url地址为

122146418-5e23f59008c47dd0

142146418-6830f8da432f5839

2.JavaScriptCore

这个是iOS7之后苹果推出的一个JS于OC交互的一个框架,极大的方便了我们对js的操作

接下来就是如何去通过js来调用oc的方法了

JavaScriptCore测试页面

3.WebViewJavascriptBridge

第三种方法是通过WebViewJavascriptBridge这个第三方库,把js和oc之间搭建一个桥,来实现相互通信,这个是我最不推荐的一种方法,因为他需要依赖第三方库来实现,通过互相注册方法,增加代码量并且并不是每次方法都能注册上,有一定的失败几率,由于不推荐,所以就安排在最后,不做太详细的解释

3.1创建webview

3.2创建WebViewJavascriptBridge

3.3注册js要调用Native

demo地址

和我之前的6s比起来就是,比好更好,套用苹果式的广告语

142146418-1481ca73a21b74ac