UIWebView和Js交互(传值)

        

一、iOS端(代码实现): 

1. 导入

2. @interface HRBindCardWebViewController ()<UIWebViewDelegate>

3. - (void)webViewDidStartLoad:(UIWebView *)webView;

4. - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;

5.

  1. -(void)webViewDidFinishLoad:(UIWebView *)webView  
  2. {  
  3.     //网页加载完成调用此方法  
  4.       
  5.     //首先创建JSContext 对象(此处通过当前webView的键获取到jscontext)  
  6.     JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];  
  7.       
  8.     //js是通过json调用的,js里面有一个方法getUserInfo();  iOS调js
  9.     //传输的数据是一个json字符串
  10.     NSString * str = [NSString stringWithFormat:@"{\"name1\" : \"%@\",\"name2\" : \"%@\"}",@"zhangsan",@"lisi"];

  11.     NSString *jsStr=[NSString stringWithFormat:@"getUserInfo('%@');",str];

        [context evaluateScript:jsStr];   

  12. //从页面获取数据处理结果 js iOS

  13.     context[@"getResult"] = ^() {

            NSArray *args = [JSContext currentArguments];

            for (id obj in args) {

                //通过delegate传给开发者

                NSLog(@"结果是:%@",obj);// 接受的值也可以用jison

            }

        };

  14. }  


 二、Js中(代码实现)

1. Js获取手机端的数据

    1)声明一个方法供iOS端调用

    2)nameAll参数是iOS端传来的jison字符串

var usrinfo = {};
function getUserInfo(nameAll){ var aaa = eval('(' + nameAll+ ')');//json格式
usrinfo.name1=aaa.name1;//获取到数据
    usrinfo.name2=aaa.name2;
}
2.Js向手机端传值

    1)向手机端定义好getResult()方法里返回值(也可以是js数据)

function onClick() {
    getResult("结果");
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值