2011年3月24日

[JavaScript]window.location.href和window.location.replace的區別

有3個jsp頁面(1.jsp, 2.jsp, 3.jsp),進系統默認的是1.jsp ,當我進入2.jsp的時候, 2.jsp裡面用window.location.replace("3.jsp");與用window.location.href("3.jsp");從用戶界面來看是沒有什麼區別的,但是當3.jsp頁面有一個「返回」按鈕,調用window.history.go(-1);wondow.history.back();方法的時候,一點這個返回按鈕就要返回2.jsp頁面的話,區別就出來了。

例子:1.html (放form,給user填資料,送出到2.jsp) ; 2.jsp (get user填的資料並處理完後,網頁轉向3.jsp) ; 3.jsp (剛剛2.jsp轉向的動作不同影響按"上一頁"的不一樣)

若是2.jsp 用window.location.replace("3.jsp") 那麼在3.jsp上按上一頁會變成1.jsp

若是2.jsp 用window.location.href("3.jsp") 那麼在3.jsp上按上一頁會變成2.jsp (沒錯~它又會再處理一次並且轉向3.jsp)


上一頁亦可用window.history.go(-1) ; window.history.back();

以上簡單的說,如果使用window.location.replace,使用瀏覽器上一頁的按鈕,是不會回到呼叫window.location.replace的那個頁面,而是回到window.location.replace呼叫前的那個頁面。這個運用在跳頁選單中,每按一次下拉式選單,就會使用window.location.replace跳到一個新頁面(事實上是同一個頁面,只是傳值不同而已),如果用window.location.href來做,那麼如果你很頻繁的使用跳頁選單來查詢,那麼當你按上一頁時,看起來都會是回到同一個頁面,如果使用window.location.replace的話,那麼按上一頁,看起來才像是回到上個頁面中。

沒有留言:

張貼留言