3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個贊
要對一個古老(但很受歡迎)的問題給出最新答案:
HTML5引入了history.pushState()和history.replaceState()方法,分別允許您添加和修改歷史記錄條目。這些方法與window.onpopstate事件結(jié)合使用。
使用history.pushState()更改XMLHttpRequest在狀態(tài)更改后創(chuàng)建的對象的HTTP標(biāo)頭中使用的引薦來源網(wǎng)址。引薦來源網(wǎng)址是文檔的URL,該文檔的窗口this位于創(chuàng)建XMLHttpRequest對象時。

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個贊
使用jQuery,我做了一個簡單的解決方案:
$(window).on('hashchange', function() {
top.location = '#main';
// Eventually alert the user describing what happened
});
到目前為止,雖然僅在谷歌瀏覽器中進(jìn)行了測試。
這解決了我的Web應(yīng)用程序的問題,該應(yīng)用程序也高度基于AJAX。
也許有點(diǎn)hack-ish,但我稱其為優(yōu)雅的hacking ;-)每當(dāng)您嘗試向后導(dǎo)航時,它都會在URI中彈出一個哈希部分,從技術(shù)上講,它就是試圖向后導(dǎo)航的內(nèi)容。
它攔截了單擊瀏覽器按鈕和鼠標(biāo)按鈕的行為。而且您不能通過每秒單擊幾次來向后強(qiáng)行破解它,這是在基于setTimeout或setInterval的解決方案中會出現(xiàn)的問題。
添加回答
舉報(bào)