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

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

作者: _会飞的鱼 | 来源:发表于2018-10-19 10:03 被阅读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的代理方法中 加入面的判断即可完美解决了,写下此文,希望能帮到大家少走弯路!

    相关文章

      网友评论

          本文标题:wkwebview 加载网页 点击link ,pdf 不会跳转

          本文链接:https://www.haomeiwen.com/subject/ovxyzftx.html