您的位置:首页 > 移动开发 > Objective-C

javaScript与Objective-C交互

2015-11-22 22:41 435 查看
准备:将webView创建,然后将其添加到view上再设置当前控制器为webview的代理。

1. objc调用js,只需要有webview就可以直接调用,也可以在下面代理方法中调用:

- (void)webViewDidFinishLoad:(UIWebView *)webView { // 不一定非要在这里面调用,只要是有webView便可以调js
  NSString *str =  [webView stringByEvaluatingJavaScriptFromString:@"clickLink();"];// 脚本的函数名
//    NSLog(@"%@",str); // 这个是调用html中的脚本,并将脚本执行后的返回值返回来。
}


或在其他地方:

NSString *str =  [webView stringByEvaluatingJavaScriptFromString:@"clickLink();"];// 脚本的函数名


2. js调用objc 一般是指操作了界面,比如点击一个按钮来调用本地objc方法

js中调用方式为通过请求发送

showScanning:function()
    {
        window.location = "ios:Scanning()"; // 调用信息  发送的信息为ios:Scanning(),需要进行解析
    },


可参考:

http://www.tanhao.me/pieces/1607.html/

# 每一次操作界面事件都会触发,包括最初始加载当前网页。每次触发需要根据其条件判断其触发的事件,在本地native页面调用。所以本地页面要在其判断出结果后调用相应的本地方法,可将所有方法封装成一个类,通过调用类方法实现所有。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { // 里面按照各自判断标准去写,其主要就是根据request转成字符串进行处理,判断是什么请求事件
    NSString *requestString = [[request URL] absoluteString];
    NSArray *components = [requestString componentsSeparatedByString:@":"];
    if ([components count] > 1 && [(NSString *)[components objectAtIndex:0] isEqualToString:@"file"]) {
          }
    
    NSLog(@"requestString = %@",requestString);
    
    if ([requestString hasPrefix:@"pr://"]) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"开始" message:@"提示点" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alert show];
    }
    return YES;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: