OC与JS交互UIWeView(一)
来源:互联网 发布:淘宝天弘基金在哪 编辑:程序博客网 时间:2024/05/29 02:04
随着h5的兴起,原生app与h5页面交互的场合越来越多,UIwebView相对于WkWebView已经非常成熟用法也非常简单无需配置,下面我来介绍一下在UIWebView下与js的简单方法调用
在UIWebView中与js交互还需要借用JavaScriptCore。
1,新建一个OC工程
2,在页面加入一个UIWebView控件,并且实现代理。
//是否允许html页面加载或者跳转,可在此处根据navigationType或者request拦截页面跳转类型- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ return YES;}//页面开始加载- (void)webViewDidStartLoad:(UIWebView *)webView{ }//页面加载结束- (void)webViewDidFinishLoad:(UIWebView *)webView{}//页面加载失败- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ }
3,写一个简单的html文件并且包含JavaScript语言
<html><header><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">function jsAlert(){ alert('这是JS方法弹出框');}function JStoOC(){ OCAlert();}</script></header><body><br/><h2> 这里是一个HTML页面 </h2><br/><form name="myform" onsubmit="return JStoOC()"><button type="submit">去调用OC弹出框</button></form></body></html>
#import <JavaScriptCore/JavaScriptCore.h>
//页面加载结束- (void)webViewDidFinishLoad:(UIWebView *)webView{ JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; context[@"JStoOC"] = ^() {//接收js的回调,其中JStoOC即为方法名如果有参数可在^()中加入 [self OCAlert]; };}//页面加载失败- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ }- (IBAction)onClickToJSAlert:(UIButton *)sender { JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; [context evaluateScript:@"jsAlert()"];//调用js方法jsAlert即为js方法名}- (void)OCAlert{ UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"OC" message:@"这是OC弹出框" preferredStyle:UIAlertControllerStyleAlert]; [alertVC addAction:action]; [self presentViewController:alertVC animated:YES completion:nil];}
5,demo地址下载http://download.csdn.net/detail/u010067452/9746291
0 0
- OC与JS交互UIWeView(一)
- OC与JS交互方法(一)拦截URL
- oc与js 交互
- oc与js交互
- JS与OC交互
- js与oc 交互
- OC与JS交互
- OC与JS交互
- OC与JS交互
- OC与JS交互
- OC 与JS 交互
- OC与JS交互
- oc 与 js 交互
- OC与JS交互
- OC与JS交互
- oc与js交互
- js与oc交互
- js 与oc 交互
- javascript基础:window对象内置对话框、模式和非模式对话框、传值方法
- Unity性能要点参考标准
- 学习记录 2017年2月3日
- android中permisson和uses-permisson的区别
- java.util.concurrent.Callable, Runnable, Future,ExecutorService介绍
- OC与JS交互UIWeView(一)
- 从键盘接收一个字符串,程序对其中所有字符进行排序
- iOS 中的 armv7,armv7s,arm64,i386,x86_64 都是什么
- jdbc-写一个连接数据库的配置文件
- 图论500题
- spring bean 的作用域
- 自定义导航条滑动返回问题
- IOException while loading persisted sessions: java.io.EOFException java.io.EOFException的解决方案
- windows下常用快捷键