设为首页 加入收藏

TOP

Objective-C与js相互调用及传参数注意
2014-11-24 03:20:00 来源: 作者: 【 】 浏览:1
Tags:Objective-C 相互 调用 参数 注意

1、Objective-c调用js方法,只是需要调用uiwebview自带的方法就可以了。


[webView stringByeva luatingjava scriptFromString:[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 stringByeva luatingjava scriptFromString:[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]


例子代码:


具体下载目录在 /2013年资料/6月/9日/Objective-C与js相互调用及传参数注意


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android开发 打开系统设置信息页面 下一篇Java 使用 TCP 和 UDP 传输文件

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)
·SQL CREATE INDEX 语 (2025-12-25 01:21:45)
·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)