1)預備:
瀏覽器對於頁面的歷史記錄使用棧來維護
2)問題:
瀏覽器裡面點選上一級返回希望可以返回屬於業務方的上一級頁面
3)window.location.href:
這個是往記錄棧裡面的棧頂插入url,此時棧頂容量+1,所以點選返回的時候是返回上一層url,例如:
index.html -> a.html -> b.html,在b.html上點選返回,回到a.html,就是一個出棧的過程。
- 但是對於一些重定向的頁面就會有問題:
index.html -> a.html -> redirect.html ? redirect=a.html(這個頁面會重定向回來到a.html)
- 重定向成功後:
index.html -> a.html -> a.html(點選返回後如果a.html沒有判斷是否要重定向的條件的話,頁面會再次發起重定向,導致使用者回不到業務方的頁面--index.html)
- 解決辦法:a.html新增是否需要重定向的條件判斷
4)window.location.replace:
這個是替換記錄棧裡面的棧頂url,此時棧頂的容量不變。所以對於一些需要重定向的頁面來說,非常有用,例如:
index.html -> a.html
- 替換為:
index.html -> redirect.html ? redirect=a.html(這個頁面會重定向回來到a.html)
- 重定向成功後:
index.html -> a.html(點選返回就可以返回index.html)