UIWebView是UIKit库下内置的浏览器控件,它继承自UIView。可以通过UIWebView浏览网页,打开文档等多种功能。系统自带的Safari就是UIWebView实现的。
网页不仅是展示页面,也是一个交互页面,当用户想从网页调用系统方法,或者系统想更改网页的内容时,就涉及到了OC与JS之间的交互。OC与JS交互有多种方法。 OC 与 JS 交互方法一:
OC调用JS指的是用户可以在手机上通过app对app里的网页进行增删改查,但是我们是不能直接修改网页的内容的,只能通过JS动态来修改。 总体来说如下是使用方法:
// OC -> JS-(void)webViewDidFinishLoad:(UIWebView *)webView { [webView stringByEvaluatingJavascriptFromString :@“这里是JS语法”]; }JS调用OC一般是指,页面中某些功能需要调用系统的方法,html和JS无法直接和系统交互,只能通知web View,然后webView获取到消息, 传递OC实现JS调用OC,比如点击网页上的电话号码实现打电话的需求。
//JS -> OC/*先在网页中设定好响应方法和协议,然后让网页响应这个协议并赋值给 window.location.href ,这样拦截所有请求的shouldStartLoadWithRequest代理方法就会接收到这个规定好的协议,按照这个协议转化成SEL方法,然后去执行就好了,就实现了JS 调用OC*/OC 与 JS 交互方法二: iOS 7之后,苹果发布了JavaScriptCore.framework,它使得JS与OC的交互更加方便了。使用时首先导入JavaScriptCore库。
举例如下:
-(void)webViewDidFinishLoad:(UIWebView *)webView { //网页加载完成调用此方法 //首先创建JSContext 对象(此处通过当前webView的键获取到jscontext) JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; NSString *alertJS=@"alert('test js OC')"; //准备执行的js代码,此处为弹出alert “test js OC” [context evaluateScript:alertJS];//通过oc方法调用js的alert }OC 与 JS 交互方法三: 当然也有一些第三方实现交互的方式,这里就不再多说了。
新闻热点
疑难解答