祝大家马年行大运,马上来财,左来财,右来财,东南西北都安排
在iOS中,加载Web页面非常常见,跳转也非常多,但是当使用a标签进行页面跳转时,点击a标签跳转页面,无响应,有一个原因就是因为WKWebView默认不处理 target="_blank" 的链接<ahref="https://www.baidu.com" onclick="handleSearch1('点击百度')" target="_blank">百度</a>
//页面开始加载时代理方法- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{ decisionHandler(WKNavigationActionPolicyAllow); return;}- (WKWebView *)webView{ if (!_webView) { WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc]init]; config.userContentController = [[WKUserContentController alloc] init]; CGRect rect = CGRectMake(0, 0, kSCREEN_WIDTH, kSCREEN_HEIGHT); if (self.isHasNavigate) { if (self.isBottomSafety) { rect = CGRectMake(0, navigationBarHeight, kSCREEN_WIDTH, kSCREEN_HEIGHT - navigationBarHeight-XBottomHeight); }else{ rect = CGRectMake(0, navigationBarHeight, kSCREEN_WIDTH, kSCREEN_HEIGHT - navigationBarHeight); } } _webView = [[WKWebView alloc] initWithFrame:rect configuration:config]; if (@available(iOS 11.0, *)) { _webView.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; } else { self.edgesForExtendedLayout = UIRectEdgeNone; } _webView.scrollView.bounces = NO; _webView.scrollView.showsVerticalScrollIndicator = NO; _webView.navigationDelegate = self; _webView.UIDelegate = self; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:BXUrl(self.loadURL) cachePolicy:(NSURLRequestReloadIgnoringLocalCacheData) timeoutInterval:30.f]; [_webView loadRequest:request]; } return _webView;}
//页面开始加载时代理方法- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{ NSURL *url = navigationAction.request.URL; // 允许所有主 frame 导航 if (navigationAction.targetFrame.isMainFrame) { decisionHandler(WKNavigationActionPolicyAllow); return; } // 拦截非主 frame(_blank)请求,在当前 WebView 加载 [webView loadRequest:navigationAction.request]; decisionHandler(WKNavigationActionPolicyCancel);}