#import <WebKit/WebKit.h>
webView.navigationDelegate = self;
代理方法介绍
- 页面即将开始加载时调用 (拦截网页的网络请求 : JS调用OC)
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation;
- 在收到响应后,决定是否跳转,即是否把这个链接对应的网页加载到
WKWebView
上
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler;
- 当内容开始返回时调用,即服务器已经在向客户端发送网页数据
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation;
- 页面加载完成之后调用 (OC调用JS : JS注入)
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation;
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation;
准备WKWebView
- (void)viewDidLoad {
[super viewDidLoad];
WKWebView *webView = [[WKWebView alloc] initWithFrame:[UIScreen mainScreen].bounds];
[self.view addSubview:webView];
webView.backgroundColor = [UIColor redColor];
self.webView = webView;
self.webView.navigationDelegate = self;
NSURL *URL = [NSURL URLWithString:@"http://m.dianping.com/tuan/deal/5501525"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
[self.webView loadRequest:request];
}
OC调用JS : JS注入 (类似UIWebView)
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation
{
NSMutableString *JSStringM = [NSMutableString string];
[JSStringM appendString:@"var headerTag = document.getElementsByTagName('header')[0];headerTag.parentNode.removeChild(headerTag);"];
[JSStringM appendString:@"var footerBtnTag = document.getElementsByClassName('footer-btn-fix')[0]; footerBtnTag.parentNode.removeChild(footerBtnTag);"];
[JSStringM appendString:@"var footerTag = document.getElementsByClassName('footer')[0]; footerTag.parentNode.removeChild(footerTag);"];
[JSStringM appendString:@"var figureTag = document.getElementsByTagName('figure')[0].children[0]; figureTag.onclick = function(){window.location.href = 'hm://www.yaowoya.com'};"];
[webView evaluateJavaScript:JSStringM completionHandler:nil];
}
JS调用OC : (类似UIWebView)
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
NSLog(@"在发送请求之前,决定是否跳转 decidePolicyForNavigationAction");
NSString *URLString = navigationAction.request.URL.absoluteString;
NSLog(@"监测到的WKWebView上的请求 %@",URLString);
NSRange range = [URLString rangeOfString:@"hm://"];
if (range.length > 0) {
[self.navigationController pushViewController:[[TestViewController alloc] init] animated:YES];
decisionHandler(WKNavigationActionPolicyCancel);
} else {
decisionHandler(WKNavigationActionPolicyAllow);
}
}