加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Objective-C与js相互调用及传参数谨慎

发布时间:2021-11-21 16:49:11 所属栏目:PHP教程 来源:互联网
导读:1、Objective-c调用js方法,只是需要调用uiwebview自带的方法就可以了。 [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@getHtmlString(%@),htmlStr]]; 2、js调用Objective-c方法,这时就需要和js约定一个参数或者方法了。 -

1、Objective-c调用js方法,只是需要调用uiwebview自带的方法就可以了。
 
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getHtmlString(‘%@’)",htmlStr]];
 
2、js调用Objective-c方法,这时就需要和js约定一个参数或者方法了。
 
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
 
在这个回调方法中,我们会得到服务器传过来的数据request,我们可以判断穿过来的参数,然后进行判断调用oc的方法。
 
            if ([request.URL.scheme isEqualToString:@"gethtmlstring"]) {
               
                NSString *htmlStr = [self getHtmlString:description];
                htmlStr =  [htmlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
                [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getHtmlString("%@")",htmlStr]];
            }
 
这样就实现了对Objective-C的调用了。
 
在这里特别值得注意的问题:我这里传了html格式的参数。我在这里就遇到了,传过去的参数始终不对,无法调用js的方法。
 
stringWithContentsOfFile,这个方法用来读取文件,如果不指定编码方式的话,有可能造成数据的丢失,所以我这里指定了utf-8的编码方式。 在传参数的时,还有可能的一种问题。这个参数里面如果带有(r n ')等等, js那边收不到这个值, 这些带的需要转义, 如下这么写js才能收到完整的消息:
 
message = [message stringByReplacingOccurrencesOfString:@"n" withString:@"\n"];
NSString *jsMethod  = [NSString stringWithFormat:@"JsMethod("%@")", message]

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读