WebView与JS交互传值


/**************************WebView的代理方法*******************/

//webView 加载结束调用此方法

- (void)webViewDidFinishLoad:(UIWebView *)webView {

    

    //objc调用Js    /** getMessageFromApp('%@')  JS中的方法***/

    

    NSString *jsCode = [NSString stringWithFormat:@"getMessageFromApp('%@')",@"我是app发来的消息"];

    

    //app js发送信息调用此方法

    [_myWebVIew stringByEvaluatingJavaScriptFromString:jsCode];

    

    //app发送的消息将会显示在网页上

}


//jsapp提交信息时的回调方法

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

    

    //从回调方法里app可以截获Js提交的信息

    NSString *requestString = [[request URL] absoluteString]; //获取请求的绝对路径

    NSString *requestStrJm = [self URLDecodedString:requestString];//将截获的信息解码

    NSLog(@"截获的信息====%@",requestStrJm);

    

    //======信息判断==========

    NSArray *commponents = [requestStrJm componentsSeparatedByString:@":"]; //提交请求时候分割参数的分隔符

    if ([commponents count] > 1 && [(NSString *)[commponents objectAtIndex:0] isEqualToString:@"testapp"]) {

        

        if ([(NSString *)[commponents objectAtIndex:1] isEqualToString:@"alert"]) {

            

            NSString *message = (NSString *)[commponents objectAtIndex:2];

            

            UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"下面是jsapp提交的信息" message:message delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil];

            

            [alert show];

        }

        

        return NO;

        

    }

    

    return YES;

}



#pragma mark  -------------- url 解码  -----------------

-(NSString *)URLDecodedString:(NSString *)str

{

    NSString *decodedString=(__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)str, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));

    

    return decodedString;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值