首頁 >web前端 >前端問答 >ajax為什麼不能後退

ajax為什麼不能後退

藏色散人
藏色散人原創
2021-12-17 15:25:061691瀏覽

因為ajax與瀏覽器的history.back()與forward()不友好,無法前進與後退,其解決辦法就是根據當前URL地址中的查詢內容讓對應的選單執行Ajax載入即可。

ajax為什麼不能後退

本文操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

ajax為什麼不能後退?解決ajax無法後退問題實例

都知道ajax有一個明顯的缺點就是與瀏覽器的history.back()與forward()不友好,不能前進與後退。

實例位址:解決ajax無法後退問題實例

解決方法:

ajax為什麼不能後退ajax為什麼不能後退

window.history實例

在console裡面印出window.history的實例,可以查看相關物件的原型。

length:length為瀏覽記錄佇列長度,由於這個頁面是新開啟的,佇列中只有目前頁面連結相關信息,其值為1

state:

pushState:就是window.history.pushState();

replaceState:就是window.replaceState();

用法:

window.history.pushState({status: 0} ,'' ,'?data=1');

ajax為什麼不能後退ajax為什麼不能後退

#改變後的瀏覽器位址

這裡要注意的是,如果實在本地運行的話,在ie和火狐上都是可以完美運行的,但是現在新版的谷歌會報錯,這是因為谷歌的安全機制問題。如果程式碼放在伺服器上的話應該是沒有這個錯誤的。

ajax為什麼不能後退ajax為什麼不能後退

所以這裡的解題思路:

#1.每次手動點擊左邊的選單,我將Ajax位址的查詢內容(?後面的)附在demo HTML頁面位址後面,使用history.pushState塞到瀏覽器歷史中。

2.瀏覽器的前進與後退,會觸發window.onpopstate事件,透過綁定popstate事件,就可以根據目前URL位址中的查詢內容讓對應的選單執行Ajax載入,實作Ajax的前進與後退效果。

3.頁面首次載入的時候,如果沒有查詢地址、或查詢地址不匹配,則使用第一個選單的Ajax地址的查詢內容,並使用history.replaceState更改當前的瀏覽器歷史,然後觸發Ajax操作。

推薦學習:《ajax影片教學

以上是ajax為什麼不能後退的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn