美文网首页
UIWebView&WKWebView拦截页面地址变更失败问题解

UIWebView&WKWebView拦截页面地址变更失败问题解

作者: 天天喜欢钱 | 来源:发表于2019-04-23 14:18 被阅读0次

    需求:项目中添加展示了H5页面,需要根据页面地址判断展示或隐藏原生按钮

    个人习惯使用UIWebView,对于这种情况的常规操作是使用代理-(BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(nonnull NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType

    但是!!!

    木有走断点啊,这就很头疼了

    经过查看网络状况及数据线是否断连情况都没有发生的情况下,皱了会眉,叹了口气,将UIWebView更换至WKWebView

    同样添加代理- (void)webView:(WKWebView )webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler

    呵呵,依然没走断点,H5链接放到浏览器查看,在点击内部按钮时,页面确实发生了变化。。。无奈,只能寻求广大网友的帮助了,大部分指导与我上边的操作一样,可我不是想知道方法里边怎么写,我是想知道它为什么不走那方法啊

    直到组长大大询问完成情况,发现我依然在这个坑里没出去的时候。。。嗯,我觉着可能对我很无语,,然后给我发了一堆她查到的链接,我一篇一篇的过,,终于在倒数第二的链接上找到了解决办法

    对WKWebView添加事件监听,注意,是WKWebView,,UIWebView我试过了,加监听也不好使

    具体为:

    [_wkWebView addObserver:self forKeyPath:@"URL" options:NSKeyValueObservingOptionNew context:nil];

    - (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context {

        if([keyPathisEqualToString:@"URL"]) {

            NSString* url = [NSStringstringWithFormat:@"%@", change[@"new"]];

            //根据url判断按钮的显示和隐藏

        }

    }

    另外学到一招,如果想添加H5加载进度条的话,可以使用同样的监听方法,监听事件为‘estimatedProgress’

    最后,一定要记得取消监听

    - (void)dealloc {

        [_wkWebView removeObserver:self forKeyPath:@"URL"];

    }

    附加帮助解决问题的文档链接:https://blog.csdn.net/jia12216/article/details/80527509

    相关文章

      网友评论

          本文标题:UIWebView&WKWebView拦截页面地址变更失败问题解

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