在APP开发中我们经常碰到一种情况:app打开一个网页,网页里有些按钮需要我们去响应,比如打开一个游戏介绍的网页,点击网页中的“立即下载”按钮,app需要跳转到对应下载界面。那么我们怎么响应?代码如下:
-(void)makeWeb
{
self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 200, self.view.frame.size.width, self.view.frame.size.height - 200)];
self.webView.backgroundColor = [UIColor whiteColor];
self.webView.scalesPageToFit = YES;
self.webView.delegate = self;
NSString *webPath = [[NSBundle mainBundle] pathForResource:@"ocandjs" ofType:@"html"];
NSURL *webURL = [NSURL fileURLWithPath:webPath];
NSURLRequest *URLRequest = [[NSURLRequest alloc] initWithURL:webURL];
[self.webView loadRequest:URLRequest];
[self.view addSubview:self.webView];
//核心方法如下
JSContext *content = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
content[@"getUrl"] = ^() {
NSLog(@"js调用oc---------begin--------");
NSArray *thisArr = [JSContext currentArguments];
for (JSValue *jsValue in thisArr) {
NSLog(@"=======%@",jsValue);
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",jsValue]]];
}
NSLog(@"js调用oc---------The End-------");
//[self.webView stringByEvaluatingJavaScriptFromString:@"show();"];
};
}
JSContext *content = [self.webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
content[@"getUrl"] = ^() {
};
在html网页中,我们在点击按钮响应的的方法里做如下定义:
function btnClick()
{
getUrl("http://www.baidu.com");
}