window.location.replace vs window.location.href

BFC發表於2018-11-23

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)




相關文章