一、iOS端(代码实现):
1. 导入
2. @interface HRBindCardWebViewController ()<UIWebViewDelegate>
3. - (void)webViewDidStartLoad:(UIWebView *)webView;
4. - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
5.
- -(void)webViewDidFinishLoad:(UIWebView *)webView
- {
- //网页加载完成调用此方法
- //首先创建JSContext 对象(此处通过当前webView的键获取到jscontext)
- JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
- //js是通过json调用的,js里面有一个方法getUserInfo(); iOS调js
- //传输的数据是一个json字符串
-
NSString * str = [NSString stringWithFormat:@"{\"name1\" : \"%@\",\"name2\" : \"%@\"}",@"zhangsan",@"lisi"];
-
NSString *jsStr=[NSString stringWithFormat:@"getUserInfo('%@');",str];
[context evaluateScript:jsStr];
-
//从页面获取数据处理结果 js 调iOS
-
context[@"getResult"] = ^() {
NSArray *args = [JSContext currentArguments];
for (id obj in args) {
//通过delegate传给开发者
NSLog(@"结果是:%@",obj);// 接受的值也可以用jison
}
};
- }
二、Js中(代码实现)
1. Js获取手机端的数据
1)声明一个方法供iOS端调用
2)nameAll参数是iOS端传来的jison字符串
2.Js向手机端传值var usrinfo = {};function getUserInfo(nameAll){ var aaa = eval('(' + nameAll+ ')');//json格式
usrinfo.name1=aaa.name1;//获取到数据usrinfo.name2=aaa.name2;}
1)向手机端定义好getResult()方法里返回值(也可以是js数据)
function onClick() { getResult("结果"); }