wkwebview 加载网页 点击link ,pdf 不会跳转

2018-10-19  本文已影响31人  _会飞的鱼

兼容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的代理方法中 加入面的判断即可完美解决了,写下此文,希望能帮到大家少走弯路!

上一篇下一篇

猜你喜欢

热点阅读