iOS中js与objective-c的简单交互
1、首先是objective-c调用js中的代码,可以用UIWebview中的一个方法 stringByEvaluatingJavaScriptFromString:后面接的是js中的方法名。这个函数的返回值就是所调用js方法 的返回值。 比如调用js中方法myFunction(),可以在代码中调用NSString *str = [self.webviewstringByEvaluatingJavaScriptFromString:@"myFunction();"];
2、js调用objective-c的方法就没那么简单了
首先在js中声明方法
<html>
<head>
<meta http-equiv="content-type"content="text/html;charset=utf-8">
<title>js调用oc</title>
<script type="text/javaScript">
/* 调用本地带参数的方法 */
function testFunction1(cmd,parameter1){
return document.location="objc://"+cmd+":/"+parameter1; //cmd代表objective-c中的的方法名,parameter1自然就是参数了
}
/* 调用本地不带参数的方法 */
function testFunction2(cmd){
return document.location="objc://"+cmd; //cmd代表objective-c中的的方法名
}
</script>
</head>
<body>
<p><button type="text" id="text1" value="点击这里1"onclick="testFunction1('printLog:','str')">调用本地带参数的方法</button></p>
<p><button type="text" id="text2" value="点击这里2"onclick="testFunction2('testFunc')">调用本地不带参数的方法</button></p>
</body>
</html>
再调用webview代理
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *urlString = [[request URL] absoluteString];
NSArray *urlComps = [urlStringcomponentsSeparatedByString:@"://"];
if([urlComps count] && [[urlCompsobjectAtIndex:0] isEqualToString:@"objc"])
{
NSArray *arrFucnameAndParameter = [(NSString*)[urlCompsobjectAtIndex:1] componentsSeparatedByString:@":/"];
NSString *funcStr = [arrFucnameAndParameterobjectAtIndex:0];
if (1 == [arrFucnameAndParametercount])
{
// 没有参数
if([funcStr isEqualToString:@"testFunc"])
{
/*调用本地函数*/
[self testFunc];
}
}
else if(2 == [arrFucnameAndParametercount])
{
//有参数的
if([funcStr isEqualToString:@"printLog:"] && [arrFucnameAndParameterobjectAtIndex:1])
{
/*调用本地函数*/
[self printLog:@"js调用本地带参数的方法成功!"];
}
}
return NO;
};
return YES;
}
- (void)printLog:(NSString *)str
{
NSLog(@"%@", str);
}
- (void)testFunc
{
NSLog(@"js调用本地不带参数的方法成功!");
}
最新文章
- CSS3 Media Queries 实现响应式设计
- [Leetcode] Repeated DNA Sequences
- C#-WebForm-★ 制作图片验证码 ★
- VS发布网站详细步骤
- 安装配置opensips
- 【练习】如何显示本地主机上的MySQL客户机版本
- linux的一点小随笔
- mysql快速上手2
- Solr4.7新建core
- C# Unix时间戳转换为时间
- 【转】判断点在多边形内(matlab)
- 痞子衡随笔:常用的数据传输差错检测技术(1)- 奇偶校验(Parity Check)
- Java中equal和==区别及String创建过程
- memcached实战系列(七)理解Memcached的数据过期方式、新建过程、查找过程
- 盖洛普Q12在团队中的应用
- Web前端3.0时代,“程序猿”如何“渡劫升仙”
- 部署KVM
- python中的单例模式、元类
- 【Linux】【Jenkins】配置过程中,立即构建时,maven找不到的问题解决方案
- ASP.NET OAuth、jwt、OpenID Connect
热门文章
- Elasticsearch和MongoDB
- RocketMQ(九):消息发送(续)
- How to remove a Data Guard Configuration from Primary Database (文档 ID 733794.1)
- ORA-01665 control file is not a standby control file
- JQuery map()函数
- 【】minimum
- NLP系列(1)_从破译外星人文字浅谈自然语言处理的基础
- 博客已迁移至http://blog.csdn.net/lujinhong2/
- Docker搭建ES
- POJ 1745 Divisibility DP