2012-09-02 69 views
2

可能重複:
Modify the URL without reloading the page
Updating address bar with new URL without hash or reloading the page任何方式來更改標題URL而不重新加載?

我的網站是完全基於Ajax請求,並在站點內簡單的導航只從一個頁面完成。這意味着當用戶點擊菜單項時,它不會加載另一個頁面,而是將內容加載到HTML元素中。但是,當用戶想要將頁面鏈接到他們的朋友時,它始終是相同的,因爲http://mysite.com/mymainpage.php將始終保持不變,而不管ajax是什麼。我如何修改用戶頭部?例如,當他們點擊「遊戲」時,jquery/js/php/html可以在瀏覽器上更改當前的URL地址欄嗎?所以它變成http://mysite.com/mymainpage.php?games=true。然後,用戶可以從地址欄中複製網站網址,並導致正確的部分加載ajax。

+0

HASH回答是正確的。然而,實施它很難。看一看[來自JQuery的漂亮插件](http://www.asual.com/jquery/address/)。 –

回答

4

您可以使用哈希:

(這是Gmail中的作用:https://mail.google.com/mail/#inboxhttps://mail.google.com/mail/#sent

可以使用閱讀哈希

window.location.hash /* gives "#games" */ 

window.location.hash.substring(1) /* gives "games" */ 

,並且可以使用

window.location.hash="#games" 

window.location.hash="games" 

改變它(現在看來,這工作,但最好使用第一個選項)

然後,每次用戶單擊鏈接時,都要像現在一樣更改散列並加載新頁面。

而當用戶進入您的頁面時,請檢查URL中是否存在散列並加載該頁面。

你也可以添加一個hashchange事件監聽器。見https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/hashchange

編輯:

不,你不能有兩個散列(http://mysite.com/mymainpage.php#games#fashion

所以如果一個用戶進入http://mysite.com/mymainpage.php?games=true,你應該他重定向到http://mysite.com/mymainpage.php#games

然後,您可以將其更改爲http://mysite.com/mymainpage.php#fashion而無需重新加載。

+0

非常感謝你!有什麼方法可以清除當前的散列嗎? 例如,如果原始頁面已經有http://mysite.com/mymainpage.php?games=true 做這個代碼是否http://mysite.com/mymainpage.php#games#fashion 它增加了它 – Zakukashi

相關問題