问题
- 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中调出
开发
菜单
偏好设置---高级
-
选择调试设备
如果真机调试需要打开JavaSscript
与Web检查器
-
选择调试的页面
选中的页面会呈现选中的状态
弹出网页检查器即可调试webview
参考
https://blog.csdn.net/u012265444/article/details/79070742
尊重原创,谢谢!
未经授权请勿转载!
网友评论