面试宝点

WKWebView 重定向url,canGoBack返回YES,

2021-12-16  本文已影响0人  tuesone

问题描述:

WKWebView 重定向url ,方法canGoBack 返回YES 但是 goBack方法执行,页面返回中间页(一般是空白页)。

根据 WKNavigation * navigation = [self.webView goBack]; 其中navigation ==nil 是可以正常返回,判断navigation != nil 在进行加载上一页。
通过 self.webView.backForwardList.backList 获取上一个数据WKBackForwardListItem 进行加载。

WKBackForwardListItem中有三个属性可以参考
URL 当前加载的地址
title 当前页返回的标题
initialURL 当前页初始化地址

1修改代码如下:

if (self.webView.canGoBack ){
            WKNavigation * navigation =  [self.webView goBack];
            
            if (navigation) {//正常返回的是nil
                NSInteger offset = 1;
                while (navigation)
                {
                    offset++;
                    //搜索返回列表中是否有WKNavigation为nil(正常数值)的加载 列表中从倒数第二 加载
                    if (self.webView.backForwardList.backList.count >= offset){
                        WKBackForwardListItem *item = [self.webView.backForwardList itemAtIndex:-offset];
                        navigation = [self.webView goToBackForwardListItem:item];
                        
                    }
                    else{//返回列表,没有可用的正确内容 ,直接跳出
                        [self.navigationController popViewControllerAnimated:YES];
                        break;
                    }
                }
            }            
        }else{
            [self.navigationController popViewControllerAnimated:YES];
        }
上一篇下一篇

猜你喜欢

热点阅读