iOS在WebApp中如何使用JS调用iOS的函数
2015-01-04 16:52
453 查看
实现功能:点击HTML的标签,通过JS调用iOS内部的原生函数
基本流程:
先看一下Web中,我们给h3标签添加一个onclick事件,让它在被点击之后,修改当前的url。
Web中的HTML代码:
view
sourceprint?
iOS中,先拖拽WebView,访问localhost,然后通过WebView的委托事件监听url跳转操作,并且把跳转截取下来。
也就是说,在onclick的时候,普通浏览器灰跳转到那个url,但是在iOS的这个WebView里面,这个跳转会被拦截,
用这种方式可以巧妙地实现JS调用iOS的原生代码:
view
sourceprint?
基本流程:
先看一下Web中,我们给h3标签添加一个onclick事件,让它在被点击之后,修改当前的url。
Web中的HTML代码:
view
sourceprint?
01.
<html>
02.
<head>
03.
<script>
04.
05.
function getInfo(name)
06.
{
07.
window.location =
"/getInfo/"
+name;
08.
}
09.
10.
11.
</script>
12.
13.
</head>
14.
15.
<body>
16.
<h3 onclick=
"getInfo('why')"
>Name</h3>
17.
</body>
18.
19.
</html>
iOS中,先拖拽WebView,访问localhost,然后通过WebView的委托事件监听url跳转操作,并且把跳转截取下来。
也就是说,在onclick的时候,普通浏览器灰跳转到那个url,但是在iOS的这个WebView里面,这个跳转会被拦截,
用这种方式可以巧妙地实现JS调用iOS的原生代码:
view
sourceprint?
01.
//
02.
// DWViewController.m
03.
// DareWayApp
04.
//
05.
// Created by why on 14-6-3.
06.
// Copyright (c) 2014年 DareWay. All rights reserved.
07.
//
08.
09.
#
import
"DWViewController.h"
10.
11.
@interface
DWViewController ()
12.
13.
@property
(weak, nonatomic) IBOutlet UIWebView *myWebview;
// 主页面
14.
15.
@end
16.
17.
@implementation
DWViewController
18.
19.
- (
void
)viewDidLoad
20.
{
21.
[
super
viewDidLoad];
22.
// Do any additional setup after loading the view, typically from a nib.
23.
24.
25.
26.
// 适配iOS6的状态栏
27.
if
([[[UIDevice currentDevice] systemVersion] floatValue] >=
7
) {
28.
_myWebview.frame = CGRectMake(
0
,
20
,self.view.frame.size.width,self.view.frame.size.height-
20
);
29.
}
30.
31.
32.
// 加载制定的URL
33.
NSURL *url =[NSURL URLWithString:@
"http://localhost"
];
34.
NSURLRequest *request =[NSURLRequest requestWithURL:url];
35.
[_myWebview setDelegate:self];
36.
[_myWebview loadRequest:request];
37.
38.
}
39.
40.
// 网页中的每一个请求都会被触发
41.
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
42.
{
43.
44.
// 每次跳转时候判断URL
45.
46.
if
([request.mainDocumentURL.relativePath isEqualToString:@
"/getInfo/why"
])
47.
{
48.
NSLog(@
"why"
);
49.
return
NO;
50.
}
51.
52.
53.
return
YES;
54.
}
55.
56.
- (
void
)didReceiveMemoryWarning
57.
{
58.
[
super
didReceiveMemoryWarning];
59.
// Dispose of any resources that can be recreated.
60.
}
61.
62.
@end
相关文章推荐
- [iOS]在WebApp中如何使用JS调用iOS的函数
- 如何在IOS平台上使用js直接调用OC方法
- cocos2d-js如何在IOS平台上使用js直接调用OC方法
- 【cocos2d-js官方文档】二十三、如何在IOS平台上使用js直接调用OC方法
- 在webView 中使用JS 调用 Android / IOS的函数 Function
- js中函数、变量如何在C#中使用?C#中函数、变量如何在js中使用?
- 如何在页面调用JS函数的代码
- Asp.Net 如何调用js中的函数function ?
- 使用ajax后后台调用js函数
- ASP.NET前台JS与后台CS函数如何互相调用
- 分享:WebView使用总结(应用函数与JS函数互相调用)
- ASP.NET前台JS与后台CS函数如何互相调用
- ...后台代码中如何调用 javascript 函数的问题! - ASP.NET专题(按钮事件中调用JS文件中函数)
- 在VC6.0中创建和使用静态链接库&amp;amp;&amp;amp;C如何调用C++ 成员函数
- JS字符串替换函数全部替换方法 JS 正则表达式如何使用变量
- iOS 里面如何使用第三方应用程序打开自己的文件,调用wps其他应用打开当前应用里面的的ppt doc xls
- 本来不知道如何写博客 现在作为老鸟也写一篇给大家看看吧 使用委托将函数放在主线程调用
- ASP.NET 使用CustomValidator调用js函数动态修改验证TextBox的正则表达式,无刷新
- GUI程序如何使用控制台输出调试信息[zz][MFC调用win32窗口显示调试信息,使用AllocConsole 函数 ]
- ASP.NET前台JS与后台CS函数如何互相调用