2013-12-22 109 views
1

我有時會在某些網站上看到類似Facebook或Google的Play Store,即通過點擊鏈接url更改(不包括#blah),但wohle網站不會重新加載。我可以使用後退/前進,所以它不會是JavaScript,我想。更改網址而無需重新加載

有人可以說我如何在網站上實現該功能嗎?謝謝

回答

6

它使用pushState,它使用JavaScript和HTML5與pushState兼容的瀏覽器完成。下面是一些文檔:https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

從這些文檔中創建報價:

假設http://mozilla.org/foo.html執行下面的JavaScript:

var stateObj = { foo: "bar" }; 
history.pushState(stateObj, "page 2", "bar.html"); 

這將導致URL欄以顯示 http://mozilla.org/bar.html ,但不會導致瀏覽器加載 bar.html甚至檢查bar.html是否存在。

可以通過這種方式更改網址,並使用javascript呈現新頁面。我通過使用Backbone.js來做到這一點,但還有其他工具可以做同樣的事情。這些技術與其中的#這些網址大致相同,只是他們擺脫了散列。 Backbone.js默認使用#,但可以配置爲使URL顯示正常。

這裏是一個SO question about how to do this using Backbone

+0

哈哈同樣該死的答案.. +1 –

0

另一種方法可以做到這一點是AngularJS。正如在上面的評論中所說的,這將使用AJAX獲取新數據來顯示,然後使用javascript更改頁面的內容,而不用加載新的URL。

相關問題