WKWebView点击链接不跳转

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

<a href = "xxx" target = "_blank">

_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的处理方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 假如你走了 假如你真的走了 假如你不会走 假如你走不了 假如只是假如 走了还是走了 假如没有假如 走了就是走了 走...
    狼神2019阅读 208评论 0 4
  • 提前30分钟到达和昆大众4S店,等候更换副驾驶安全气囊发射器,购车10年了,还能享受到这样的召回服务,稍感意外...
    于艳华开启心灵之旅阅读 123评论 0 2
  • 古磴入青天,云生万仞渊。 林中涓露滴,山表曙烟连。 黄叶积纡道,彩裳接顶巅。 风光绝胜处,礼佛悟真禅。 更多原创诗...
    潇湘语文阅读 1,394评论 20 44