iOS - html 与 oc交互

来源:互联网 发布:怎么样投诉淘宝客服 编辑:程序博客网 时间:2024/05/22 04:23

Objective-C语言调用JavaScript语言,是通过UIWebView的方法来实现的,

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

该方法向UIWebView传递一段需要执行的JavaScript代码

- (void)viewDidLoad {    [super viewDidLoad];    //创建webView(iOS8中可使用wkWebView)并设置代理    _webView = [[UIWebView alloc]initWithFrame:self.view.bounds];    [self.view addSubview:_webView];    _webView.delegate = self;    //加载本地html    NSString *path = [[NSBundle mainBundle]pathForResource:@"h5" ofType:@"html"];    //转成UTF8    NSString *url = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];    //加载    [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];}- (void)webViewDidStartLoad:(UIWebView *)webView{    NSLog(@"开始加载");}- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {    //当用户点击时捕获该网络请求url    NSURL *url = [request URL];    //devzeng://login?name=XXXXXX&password=123456    if ([[url scheme] isEqualToString:@"devzeng"]) {//获取url标识        if ([[url host] isEqualToString:@"login"]) {            //获取参数 --- name=XXXXXX&password=123456            NSDictionary *params = [self getParams:[url query]];            //与原生代码进行交互并返回结果            BOOL status = [self login:params[@"name"] password:params[@"password"]];            if (status) {                [webView stringByEvaluatingJavaScriptFromString:@"alert('登录成功')"];            }else{                [webView stringByEvaluatingJavaScriptFromString:@"alert('登录失败')"];            }        }    }    return YES;}- (BOOL)login:(NSString *)name password:(NSString *)pwd{    if ([name isEqualToString:@"XXXXXX"] && [pwd isEqualToString:@"123456"]) {        return YES;    }    return  NO;}- (NSDictionary*)getParams:(NSString *)str{    NSArray *arr = [str componentsSeparatedByString:@"&"];    NSArray *nameArr = [arr[0] componentsSeparatedByString:@"="];    NSArray *pwdArr = [arr[1] componentsSeparatedByString:@"="];    NSDictionary *dic = @{@"name":nameArr[1],@"password":pwdArr[1]};    return dic;}

常见用法
1.获取页面title

NSString *title = [webview stringByEvaluatingJavaScriptFromString:@"document.title"];

2.获取当前的url

NSString *url = [webview stringByEvaluatingJavaScriptFromString:@"document.location.href"];

除以上方法外也可使用第三方的框架

https://github.com/marcuswestin/WebViewJavascriptBridge

相关内容整理自网络,参考链接:

曾静技术博客-iOS中JavaScript和OC交互

iOS开发之Objective-C与JavaScript的交互

关于UIWebView的总结

附html

<html>    <head>        <meta http-equiv="content-type" content="text/html;charset=utf-8" />        <meta http-equiv="X-UA-Compatible" content="IE=Edge" />        <meta content="always" name="referrer" />        <title>测试网页</title>    </head>    <body>        <br />        <a href="devzeng://login?name=XXXXXX&password=123456">点击链接</a>    </body></html>
0 0
原创粉丝点击