前言
之前写的网页需要嵌入到webview中,android中原生有canBack方法可以直接判断,所以功能一直很正常;这次嵌入到别的app中,并且js调用了pushState方法导致功能异常,于是就特地查阅了一番。
浏览器原理
下面会模拟一些操作,你会很直观的理解浏览器的行为。
注意:history的replaceState和pushState只是改变了历史记录和浏览器的地址栏,并不会加载页面,就像图中url1被替换成了url4,但界面显示的还是url1;如果希望切换路由并且页面页加载使用location.replace和location.href,history的结果是一样的。所以step1、2、3的跳转可以是pushState或location.href,主要看你要不要地址栏和显示一致
无关紧要的点
- chrome打开新的标签页就已经有一条记录了,是一个内置推荐页chrome://new-tab-page-third-party/ ,其他浏览器应该也是一样的(未验证),这个推荐页用户可以在设置里修改的。
- 浏览器输入网址和location.href跳转效果是一样的,每次输入都会增加一条记录。
- location.href、location.replace对应的就是vue里的router.replace