WKWebView系列–点击按钮无反应

释放双眼,带上耳机,听听看~!
问题
  • App中有个一webview,点击里面的按钮没有反应
分析
  • 确定是App问题还是web的问题
    因为之前用UIWebView现在转为WKWebvView,先看看UIwebView是否正常跳转
    经检验UIWebView可以正常跳转,可以排除web的问题,定位到App中
  • 是否代理方法有问题

    点击按钮,没进第一个断点,只在第二个断点
    网上搜索WKWebvView点击按钮无反应,能找到解决方案,但是没有过多解释,先尝试一下

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    if ([webView.URL.absoluteString containsString:@"crowdrise"]) {
        [[UIApplication sharedApplication] openURL:webView.URL];
    }
    if (navigationAction.targetFrame == nil) {
        [webView loadRequest:navigationAction.request];
    }  else {
        decisionHandler(WKNavigationActionPolicyAllow);
        return;
    }
    decisionHandler(WKNavigationActionPolicyCancel);
}

可以解决问题,但是并不懂其中原理,继续查找资料
有资料说是因为html源码中有一个可点击的标签带有target='_blank'就会导致WKWebView无法加载点击后的网页的问题

验证

用Safari对webview进行调试,html源码的确有`target=’_blank’
验证完成

 

描述
target=’ _blank’ 在新窗口中打开被链接文档
target=’_self’ 默认 在相同的框架中打开被链接文档
target=’_parent’ 在父框架集中打开被链接文档
target=’_top’ 在整个窗口中打开被链接文档
target=’framename’ 在指定的框架中打开被链接文档
如何用Safari调试webview
  • 在Safari中调出开发菜单
    偏好设置—高级

  • 选择调试设备
    如果真机调试需要打开JavaSscriptWeb检查器

  • 选择调试的页面
    选中的页面会呈现选中的状态
    弹出网页检查器即可调试webview

 

人已赞赏
iOS文章

关于 UINavigationController 返回时,UITabBar 的 UITabBarButton 出现错位的问题

2019-10-20 17:32:34

iOS文章

iOS遇到的错误总结

2019-10-21 13:40:22

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索