2009-10-06

【程式】JS : location.href, locatino.replace( ) & location.reload( )

最近有用到這個東西~~來記錄一下.

location.reload( ),就是將頁面重讀,很像是按F5,所以不太需要介紹。

我這裡主要是想說 location.href 跟 location.replace( ) 的差別。

下面內容來自於:細談 location.href 與 location.replace 的差別與實務應用 ,很清楚。


1. 直接用( a href="a.htm" )連結的作法
    * 瀏覽器會送出 Referer 這個 HTTP Header
    * 瀏覽器會紀錄連結的歷史紀錄 ( 好讓瀏覽器的 上一頁 、 下一頁 按鈕可以運作 )

2. 透過 JavaScript 的 location.href 指派網址
    * 瀏覽器不會送出 Referer 這個 HTTP Header
    * 瀏覽器會紀錄連結的歷史紀錄 ( 好讓瀏覽器的 上一頁 、 下一頁 按鈕可以運作 )

3. 透過 JavaScript 的 location.replace 傳入網址
    * 瀏覽器不會送出 Referer 這個 HTTP Header
    * 瀏覽器不會紀錄連結的歷史紀錄! ( 瀏覽器將無瀏覽歷史紀錄 )

 


接著說明一下我的應用方式。

如果只是單純的想要跳頁,那就用 location.href = 'xxx.html',即可,

這樣子,使用者在按上一頁時,還可以回到之前的頁面。

 

但如果是要從 A 頁面 ( 例如:編輯個人資料 ) 按儲存後,

導到 B 頁面 ( 例如:某 php 頁面,執行儲存動作 ),

B 頁面執行完後,自動導至 C 頁面 ( 例如:顯示完成訊息)。

這時,你應該不希望在 C 頁面時,按上一頁是回到 B 頁面了,

因為在IE的話,就會出現:

所以這邊就可以用 location.replace( ) 來完成,這樣上一頁就會回到 A 頁面。

PS.
  Firefox 則不管是用 location.href or location.replace( ) 都會直接回到 A 頁面,真棒。
  IE真爛~~。

0 comments:

張貼留言