今儿产品新增个小需求,在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>
网友评论