首页 > 代码库 > js(javascript)与OC(Objective-C)交互
js(javascript)与OC(Objective-C)交互
实质上oc与js的通信交互就是发送消息,也即函数调用,iOS7以后官方公布JavaScriptCore framework中很方便我们对他们之间的相互调用。在以前我们只能通过UIWebView的UIWebViewDelegate协议来实现.
1 | - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; |
或者
1 | - (void)webViewDidStartLoad:(UIWebView *)webView; |
- oc–>js stringByEvaluatingJavaScriptFromString,其参数是一NSString 字符串内容是js代码(这又可以是一个js函数、一句js代码或他们的组合),当js函数有返回值或一句js代码有值返回可通过stringByEvaluatingJavaScriptFromString的返回值获取
- js–>oc 利用webView的重定向原理(即重新在js中指定document.location的值,此为一url),只要在这个url字符串中按自定义的规则指定好所需调用oc中的函数和参数,然后通过OC中的shouldStartLoadWithRequest函数去捕获处理请求。
一 JS调用OC
js调用iOS分两种情况
js里面直接调用方法
js里面通过对象调用方法
js里面直接调用方法
1 | - (void)webViewDidStartLoad:(UIWebView *)webView{ |
js里面通过对象调用方法
在这个方法中我们需要使用到 JSExport
JSExport
是一个协议,自定义协议后,里面的声明变量等会对JS开放,我们即可调用。
首先我们要自定义一个协议,添加头文件#import <JavaScriptCore/JavaScriptCore.h>
,继承自NSObject
1 | |
在.m中实现
1 | |
在weibview加载完成之后调用
1 | -(void)webViewDidFinishLoad:(UIWebView *)webView |
二 OC调用JS
方法很简单,在加载webview后,通过点击事件,或者 返回值,调用stringByEvaluatingJavaScriptFromString
来实现调用JS代码
1 | /* |
js(javascript)与OC(Objective-C)交互
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。