H5跳轉問題
1. 問題記錄
在嵌入在APP的頁面中,出現了H5的多層級跳轉返回混亂的問題。我們在頁面跳轉的時候統一用了window.location.replace
這樣的本意是在history
的棧中,推進了當前棧,history
棧的長度+1的。當觸發webview
的返回事件時,最好是選擇history.go()
或者history.back()
的方法
2. 業務中的使用
如果APP原生沒有對返回按鈕做處理的話,就相當於瀏覽器的返回按鈕是一樣的,我們現有的需求是希望用戶點擊彈框的關閉按鈕,跳轉到上一級頁面。最初的代碼是選擇使用window.location.replace
的方式,這種方式就使得history
棧的長度+1,在回到上一級頁面時,再次點擊返回,又回到了有彈框的頁面,這樣就會陷入到死循環。所以,我們在這次關閉彈框時,選擇了用history.go(-1)
的方式,這樣不管用戶怎么操作,用戶都是從上一級頁面進來的,返回的時候也始終是返回到上一級頁面。
3. H5中的坑
- 在嵌入到APP的H5頁面中,直接使用
history
會存在報錯的異常,我們最好是選擇使用window.history
- H5頁面中的棧溢出,這種情況不確定是不是在所有嵌入到APP H5頁面都是這樣,在IOS中,如果使用
window.location.replace
的跳轉,會出現棧溢出,超出最大限制的問題,所以,在跳轉的事件中,我們統一使用了window.location.href
的事件。
這些問題都是在我們H5嵌入到APP中關於
history
遇到的問題整理