场景:
需要在网络错误,网络断开,加载失败等情况下,webview加载一个默认的错误页面,页面有一个刷新按钮,点击按钮,刷新页面,很明显,我们要刷新的页面是错误页面的前一个页面,但webview会把当前错误页面的url也加进历史栈,此时,我们的刷新逻辑应该是replace当前错误页面而不是load一个新页面。
webview的api中并没有replace类似的方法,但浏览器自带window.location.replace(),所以我们得通过和js交互实现该功能。
webview.loadUrl("${MacConstant.JAVASCRIPT}:window.location.replace('" + url + "')")
这样我们实际需要刷新的url就会替换掉当前的错误页面url,并且栈中错误页面url会被替换掉。