WKWebView点击链接不跳转

公司运营用第三方开发了一个广告引导页,最后一页有个按钮,点击跳转我司的一个页面。但是微网站、android点击都能跳转,唯独iOS app不行,试着用Safari打开该引导页,发现点击可以跳转,但是新开了一个窗口进行的跳转,怀疑app里不能跳转跟这个有关。有问题,Google一下:
找到原因:


_blank 是开一个新的页面打开网页,但是在项目中并没有支持新开页面。

在我们的项目实际需求中,并不需要新开一个窗口,所以当截获这种请求时,无需新开窗口,直接在当前页面加载该请求即可:

-(void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
    //如果是跳转一个新页面
    if (navigationAction.targetFrame == nil) {
        [webView loadRequest:navigationAction.request];
    }
    decisionHandler(WKNavigationActionPolicyAllow);
}

- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures
{
    WKFrameInfo *frameInfo = navigationAction.targetFrame;
    if (![frameInfo isMainFrame]) {
        [webView loadRequest:navigationAction.request];
    }
    return nil;
}

PS:实际在我们项目中,调试时我并未在网页中找到_blank标签,但点击确实会触发createWebViewWithConfiguration回调。

参考文章:
iOS WKWebView 加载网页 点击link不会跳转的解决方案

这篇文章有提到一个移除“_blank”标签的方案,我觉得思路也很好,不过在我的项目里不适用(点击跳转按钮没有触发该回调)
WKWebView遇到_blank的处理方法

你可能感兴趣的:(WKWebView点击链接不跳转)