我正在編寫一個複雜的AJAX應用程序,整個站點都有乾淨的URL。目前,PHP爲每個頁面創建基本佈局,但是當用戶點擊一個鏈接時,我不希望從每個頁面離開,並且我不希望在URL中有一個哈希值,因爲它贏得了「與網站的其他部分保持一致。我知道這已經在網站上產生了負載,並且似乎是相當普遍的問題,但我想知道是否有一種簡潔的HTML5方式,即使它在技術上保持不變,也只是在地址欄中更改網址頁。如何在瀏覽器中更改網址而不導航離開頁面?
8
A
回答
34
您可以使用history.pushState
來完成,但只能在支持它的瀏覽器中使用。只需在瀏覽器的JavaScript控制檯中嘗試以下行。
history.pushState({},"URL Rewrite Example","https://stackoverflow.com/example")
更多關於在The pushState() method (Mozilla Developer)
類似問題How do I, with JavaScript, change the URL in the browser without loading the new page?
3
正如其他人所指出的,HTML5的history.pushstate是要走的路。嘗試瀏覽github上的回購以查看它的行動(https://github.com/visionmedia/express)。
故障是唯一支持history.pushstate的IE版本,IE10,這有點糟糕。
大量網站使用hashbang#! URL(例如Twitter)(例如https://twitter.com/#!/Sironfoot)。 hashbang是由搜索引擎同意的URL模式,以便他們仍然可以拖拉和索引一個大量使用Ajax的網站(更多信息請參閱http://code.google.com/web/ajaxcrawling/docs/specification.html),以便您可以轉到該路線。
唯一的另一種方法是對支持瀏覽器的瀏覽器使用history.pushstate,對於不支持的瀏覽器則使用full-page刷新。
相關問題
- 1. 此網站如何更改瀏覽器的網址而不更改頁面?
- 2. Angular2網址不會隨瀏覽器導航而更新
- 3. 在導航離開頁面
- 4. WP8 Web瀏覽器,停止導航而不會造成頁面
- 5. 如何更改異步頁面加載的導航網址
- 6. 如何更改webview的網址,而不使用多個網頁瀏覽
- 7. JSF頁面使用重寫導航(需要更改導航瀏覽器URL)
- 8. 網頁瀏覽器導航失敗
- 9. 變更網址在瀏覽器,而重載現有的頁面地址欄
- 10. 在服務器上運行時,導航到各種頁面不會更改瀏覽器地址欄中的URL
- 11. Facebook如何更改瀏覽器地址欄中的網址而無需重新加載頁面或使用#或?
- 12. React路由器 - 更改網址而不導航
- 13. 在瀏覽器中刷新瀏覽器頁面時,請點擊更改網址中的哈希值
- 14. 在不同瀏覽器中更改導航按鈕大小
- 15. CSS導航在不同的瀏覽器中更改
- 16. Kunena - 如何更改瀏覽器頁面的網站名稱
- 17. 如何在用戶關閉瀏覽器窗口或在php中導航離開頁面時銷燬會話?
- 18. 如何在地址欄中更改網址而不重新加載頁面
- 19. .PHP網頁下載而不是在瀏覽器中打開
- 20. VB.Net - 網頁瀏覽器,在新標籤頁中打開導航錯誤
- 21. 更改頁面,而不是導航到新的頁面
- 22. 如何重定向頁面但不改變瀏覽器的網址?
- 23. 如何而HTML網頁的瀏覽器
- 24. 如何更改網址而不刷新Google+等頁面?
- 25. 如何更改網址文本而不是實際頁面?
- 26. 如何在不離開頁面的情況下更改瀏覽器中顯示的URL
- 27. PHP:如何在瀏覽器中更改PDF頁面標題
- 28. 導航抽屜打開不同的網頁瀏覽
- 29. 更改頁面網址而不刷新頁面
- 30. 在WebView中更改URL而不是打開瀏覽器