兼容iOS8 项目中的UIWebView 也换成WKWebView了,使用起来就是舒心,然而一提测就懵逼了!
在UIWebview中能跳转的pdf在wkwebview中打不开了
why ?
一直怀疑是UIWebview支持跨域,wkwebview不支持跨域,折腾好一会,通过简单的html调试 发现此问题非跨域问题,很重要!!!
经过2个小时的google 找到如下解决办法 完美
原因 原生是html中标签设置了用新界面打开 ,代码如下
<a href = "xxx.pdf" target = "_blank">
原来 "_black" 是开一个新的页面 打开网页,就像safari中弹出一个新的页面显示一样 但是在项目中我们并没有让他打开一个新的页面,所以就会导致点击没反应 解决方法也很简单,判断如果不是在本页面打开 就重新 load一下 也可以 调用safari打开
重新reload 方法
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
//如果是跳转一个新页面 原来 "_black" 是开一个新的页面 打开网页,就像safari中弹出一个新的页面显示一样 但是在项目中我们并没有让他打开一个新的页面,所以就会导致点击没反应 解决方法也很简单,判断如果不是在本页面打开 就重新 load一下 也可以 调用safari打开
if (navigationAction.targetFrame == nil) {
[self.wkWebView loadRequest:navigationAction.request];
}
decisionHandler(WKNavigationActionPolicyAllow);
调用safari打开方法
此方法为打开外部safari浏览器
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"url"]];
在 WKWebView的代理方法中 加入面的判断即可完美解决了,写下此文,希望能帮到大家少走弯路!
网友评论