zoukankan      html  css  js  c++  java
  • webview的使用以及js调用OC传参

    webview如何想要js和oc交互,需要使用代理方法 ,并且需要和后台协定规则

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

        NSString *url = request.URL.absoluteString;

         NSLog(@"========%@",url);

        NSString *urlString=request.URL.absoluteString;

        //我们制定了一个协议,调用oc的方法都以hq://开头,后边跟着方法名

        NSString *scheme=@"icocos:///";

        //如果是我们自定义的协议hq://call

        if ([urlString hasPrefix:scheme]) {

            //取出scheme后边的路径

            NSString *path=[urlString substringFromIndex:scheme.length];

            //根据?区分出方法名  参数

            NSArray *array=[path componentsSeparatedByString:@"?"];

            NSLog(@"%@",array);

            NSString *methodName=array.firstObject;

            if (array.count == 2) {

              NSString *str = [array.lastObject stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

           NSDictionary *dict = [[NSString alloc] dictionaryWithJsonString:str];

                [[NSUserDefaults standardUserDefaults]setObject:dict forKey:@"Wxpaydict"];

            }

            NSLog(@"-----------%@",methodName);

            SEL method = NSSelectorFromString(methodName);

                    [self performSelector:method];

            return NO;

        }

        return YES;

    }

     methodName就是你和后台协定的规则 方法名

    NSString *scheme=@"icocos:///";  前后台必须要一致

    下面是js传参给oc  还是很麻烦的

     NSArray *array=[path componentsSeparatedByString:@"?"];

            NSLog(@"%@",array);

            NSString *methodName=array.firstObject;

            if (array.count == 2) {

              NSString *str = [array.lastObject stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

           NSDictionary *dict = [[NSString alloc] dictionaryWithJsonString:str];

    挥毫泼墨,书写人生篇章
  • 相关阅读:
    微信小程序,地址助手
    Cordova 项目,升级 Xcode 从 10.3 到 11.0 扫坑日记
    MySQL 重启提示超出可打开文件数限制|Buffered warning: Changed limits: max_open_files: 1024
    “基于名称”的虚拟主机支持
    阿里云免费证书配置
    微信小程序开发常见问题
    webpack 打包压缩 ES6文件报错UglifyJs + Unexpected token punc «(», expected punc «:»
    本地不安装webpack,找不到webpack包
    Hdu1097(计算a的b次幂最后一位数值)
    计算某天是所在年的第几天
  • 原文地址:https://www.cnblogs.com/Jusive/p/5760941.html
Copyright © 2011-2022 走看看