iOS開發中oc程式碼響應js網頁點選事件的方法
在APP開發中我們經常碰到一種情況:app開啟一個網頁,網頁裡有些按鈕需要我們去響應,比如開啟一個遊戲介紹的網頁,點選網頁中的“立即下載”按鈕,app需要跳轉到對應下載介面。那麼我們怎麼響應?程式碼如下:
-(void)makeWeb
{
self.webView = [[UIWebViewalloc] initWithFrame:CGRectMake(0, 200, self.view.frame.size.width, self.view.frame.size.height - 200)];
self.webView.backgroundColor = [UIColorwhiteColor
self.webView.scalesPageToFit = YES;
self.webView.delegate = self;
NSString *webPath = [[NSBundlemainBundle] pathForResource:@"ocandjs"ofType:@"html"];
NSURL *webURL = [NSURLfileURLWithPath:webPath];
NSURLRequest *URLRequest = [[NSURLRequestalloc] initWithURL:webURL];
[self.webViewloadRequest
[self.viewaddSubview:self.webView];
//核心方法如下
JSContext *content = [self.webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
content[@"getUrl"] = ^() {
NSLog(@"js呼叫oc---------begin--------");
NSArray *thisArr = [JSContextcurrentArguments];
for (
NSLog(@"=======%@",jsValue);
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:[NSStringstringWithFormat:@"%@",jsValue]]];
}
NSLog(@"js呼叫oc---------The End-------");
//[self.webView stringByEvaluatingJavaScriptFromString:@"show();"];
};
}
這是app端的程式碼,程式碼通過JSContext *content = [self.webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
content[@"getUrl"] = ^() {
};
這個方法來識別js程式碼中含有的getUrl名字的引數。在html網頁中,我們在點選按鈕響應的的方法裡做如下定義:
function btnClick()
{
getUrl("http://www.baidu.com");
}
注意:上面程式碼是網頁端寫的,其中getUrl與oc程式碼中content[@"getUrl"]對應,這樣oc程式碼才能識別。