2010-08-25 16 views
3

我試圖找到最佳方法不打破我的JavaScript應用程序中的後退按鈕。注入新的歷史記錄條目而不更改網址。像谷歌地圖呢

在我的研究中,我試圖看看最先進的技術是什麼。所以我轉向谷歌地圖,看看它是如何工作的。

它具有後退/前進功能,但在生成新的歷史記錄條目時不會更改網址。嘗試去http://maps.google.com/,輸入NY並按回車。現在使用後退按鈕。沒有網址更改。

他們如何做到這一點?我試圖找出它,但我很難通過關於javascript歷史和IE6技巧的過時文檔涉水。

+0

重複:http://stackoverflow.com/questions/tagged/browser-state – balupton 2010-09-18 11:46:12

回答

3

創建一個新的歷史條目:

location.hash = 'new_history_entry'; 

創建無歷史記錄條目:

location.replace('http://no/new/history/entry'); 

谷歌地圖使用了框架。要驗證它,運行HttpFox。你會得到一個帶有JavaScript的HTML頁面。 你可以自己分析它,或者只是相信我,它可以處理幀。

+1

這加載一個新的頁面,而不會改變歷史。 我想不加載新頁面,但更改歷史記錄。 很高興認識你。 – silviot 2010-08-25 16:28:46

+0

ow,這是用location.hash完成的。我會更新我的帖子。 – Lekensteyn 2010-08-25 16:29:43

+1

我知道location.hash,但這不是谷歌正在做的事情。 請確認他們的歷史。搜索一下,然後回去。沒有網址更改(包括散列),但頁面更改。 – silviot 2010-08-25 16:32:46

1

Lekensteyn的答案不會在IE6中添加後退/前進按鈕,你需要一個框架。 jQuery History使用onhashchange事件,如果瀏覽器支持它(所有現代瀏覽器),如果不是,它會添加所需的適當的後向支持(ie6需要iframes,firefox 1,ie7等只是需要間隔檢查)。

相關問題