浅谈UIWebView与JavaScript交互

来源:互联网 发布:淘宝如何招募分销商 编辑:程序博客网 时间:2024/05/01 04:30

我们在写程序的时候有时候避免不了要加载web页面,当然也避免不了要与web进行交互了,有时候一个比较好看规整的界面

我们iOS 在前端要花很大一会要摆控件,要适配,要赋值等操作,但是加载别人写好的web页面速度快,效率高,界面好,

但是就必须交互,如果交互性很强的地方用原生的比较好

简单的谈谈我用到的js交互

我们的控制器加载UIWebView之后,交互中这个方法很重要

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;


1.js向iOS传值

我在这个方法里面先截取url

NSString *requestString = [[requestURL]absoluteString];

NSArray *components = [requestStringcomponentsSeparatedByString:@":"];


我可爱的后台人员给我们这样的方法


gozhusu这个就是方法名,加号后面的一串都是参数,也就是说现在可爱的后台人员要给我传值,那么我在iOS里面怎么接收呢

我现在截取到url同时根据@":"截取url字符串放进数组里面

结果如下:


现在,我就要获取后台给我的值,如下

if ([componentscount] >1 && [(NSString *)[componentsobjectAtIndex:0]isEqualToString:@"gozhusu"]) {

       if([(NSString *)[componentsobjectAtIndex:1]isEqualToString:@"arg"])

        {

           NSString *parma  = [[NSStringalloc]initWithString:[componentsobjectAtIndex:2]];

           NSArray *array = [parmacomponentsSeparatedByString:@","];

           PatientInfoVC *patientInfo = [[PatientInfoVCalloc]init];

            NSString *nam = [ array[2]stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

            NSString *sex = [array[1]stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

            patientInfo.sex= sex;

            patientInfo.name = nam;

            patientInfo.appointid = array[0];

            [self.navigationControllerpushViewController:patientInfoanimated:YES];

        }

       returnNO;

   }

2.ios 向js传值,相同的道理stringByEvaluatingJavaScriptFromString是非常有用的

if ([componentscount] >1 && [(NSString *)[componentsobjectAtIndex:0]isEqualToString:@"getauthid"]) {

       if([(NSString *)[componentsobjectAtIndex:1]isEqualToString:@"arg"])

        {

           if (hosiptalArr) {

                [webView stringByEvaluatingJavaScriptFromString:[NSStringstringWithFormat:@"authid('%@');",[UserConfiggetInstance].authorityId]];

            }

        }

       returnNO;

    }


我将[UserConfig getInstance].authorityId]这个值通过authid方法就传给js了

1 0
原创粉丝点击