方法有好幾種,現(xiàn)在知道的話蝌蹂,是三種比較好
一味混、url截取的方式
- OC調(diào)用JS
與h5端協(xié)商好協(xié)議挫以,在- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
方法中接入request的url眼姐,來進(jìn)行判斷,調(diào)用native的方法佩番。 - JS調(diào)用OC
NSString *jsStr = [NSString stringWithFormat:@"showAlert('%@')",@"這里是JS中alert彈出的message"];
[self.webView stringByEvaluatingJavaScriptFromString:jsStr];
二众旗、使用庫JavaScriptCore
在iOS 7之后,apple添加了一個(gè)新的庫JavaScriptCore趟畏,用來做JS交互贡歧,因此JS與原生OC交互也變得簡單了許多。
首先導(dǎo)入JavaScriptCore庫, 然后在OC中獲取JS的上下文
- JS調(diào)用OC
- (void)webViewDidFinishLoad:(UIWebView *)webView {
//JS調(diào)用OC的方法
JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
context [@"onClickOC"] = ^(NSString *string) {
NSLog(@"onClickOC == %@",string);
dispatch_async(dispatch_get_main_queue(), ^{
//在block中赋秀,要回到主線程刷新界面
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"方式二" message:@"這是OC原生的彈出窗" delegate:self cancelButtonTitle:@"收到" otherButtonTitles:nil];
[alertView show];
});
};
}
- OC調(diào)用JS
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
//OC調(diào)用JS的方法
JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//準(zhǔn)備執(zhí)行的js代碼 test js OC 是傳給js的參數(shù)利朵,(字符串是單引號)
NSString *alertJS = @"showAlert('OC調(diào)用JS的方法')";
//通過oc方法調(diào)用js的alert
[context evaluateScript:alertJS];
}
以上參考文章:
http://www.reibang.com/p/d19689e0ed83
三、WKWebView
參考文章:
http://www.reibang.com/p/e09305d90fba
http://www.reibang.com/p/99c3af6894f4