美文网首页iOS Developer程序员
canGoBack一直为NO的坑

canGoBack一直为NO的坑

作者: 强子ly | 来源:发表于2018-04-24 19:17 被阅读72次

今儿产品新增个小需求,在webView导航栏加一个关闭按钮

if (self.wkWebView.canGoBack)
{
    [self.wkWebView goBack];
}else
{
    [self.navigationController popViewControllerAnimated:YES];
}

问题:

返回按钮大概就是这么个逻辑,最后在网页的二三级页面canGoBack返回值一直为NO,总是返回不到网页的上级页面。

分析:

觉得本地就一个if逻辑应该是没问题的,应该是网页的跳转逻辑有问题,webView的canGoBack既然检测不到的话,网页的上一级页面应该被干掉了。

解决:

通过devtools调试看了一下网页的跳转逻辑,oh,shit,它果然用的是location.replace()。问题解决了。
前端修改:

location.replace("http://xxxxx")     --->    location.assign("http://xxxxx")

关于location,在w3school中有这样的介绍:

  • 简介
    Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问。
  • 对象方法
属性 描述
assign() 加载新的文档
reload() 重新加载当前文档
replace() 用新的文档替换当前文档
    <script>
        function testClick() {
            // window.location.replace("http://www.baidu.com");
            window.location.assign("http://www.baidu.com");
        }
    </script>

相关文章

网友评论

    本文标题:canGoBack一直为NO的坑

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