2010-11-03 80 views
8

JavaScript可以更改瀏覽器的URL但不離開頁面嗎?如何在不離開頁面的情況下更改瀏覽器中顯示的URL

+0

您的意思是更改地址欄中的文本而不實際去那裏? – Adam 2010-11-03 16:21:54

+0

請先搜索網站:http://stackoverflow.com/search?q=javascript+change+url+ – BGerrissen 2010-11-03 16:23:04

+2

*許多*問題的可能重複。例如:[用jQuery更改URL而不重新加載頁面](http://stackoverflow.com/questions/4013122/changing-the-url-with-jquery-without-reloading-the-page) – Robusto 2010-11-03 16:25:25

回答

13

在舊版瀏覽器中,您可以而不是在不離開頁面的情況下更改地址欄中的網址。但是,您可以在不離開頁面的情況下更改網址的哈希部分。也就是說,您可以使用JavaScript window.location.hash = "new_text"www.example.com更改爲www.example.com#new_text; #之後的所有內容都可以更改。

但是,在HTML5中有一個新的歷史API,它允許您更改域後的URL部分。因此,您仍然無法將www.example.com更改爲www.BankOfAmerica.com(出於安全原因),但是您可以將www.example.com/foo更改爲www.example.com/bar

history.pushState("object or string representing the state of the page", "new title", "newURL"); 

檢查When can I use...,看看哪些瀏覽器支持HTML5會話歷史記錄管理和支持新pushState方法。

此外,還有一個JavaScript庫,它將跨瀏覽器對歷史記錄API進行規範化處理,並在新瀏覽器中更改URL,並使用舊版瀏覽器的散列部分。見history.js

+1

是, 您可以。我只是不知道如何。 Facebook做到了,但他們當然是超級程序員。編輯:剛剛發現如何在這裏:http://stackoverflow.com/questions/6955430/change-url-on-ajax-request – 2011-09-16 15:37:00

+0

@Eduard Luca謝謝你給我看,我已經相應地更新了這個答案。 – Adam 2011-09-16 18:16:49

0

您可以在哈希標記(#)之後更改任何內容,因爲它經常用於Ajax應用程序,例如Google搜索和新的Twitter。 (這就是爲什麼一切都出現在這些應用程序中的哈希標記之後。)但是,如果您更改其他任何內容,則必須重新加載頁面。

5

我打算假設您正在談論URL欄中的可見URL。

答案是否定的,當應用程序試圖讓欺騙用戶想到另一個站點時,它是一個主要的安全漏洞。

-1

不,這是不可能的。而且,只要有可能,那是一個瀏覽器錯誤(我知道以前的與此行爲有關的安全漏洞,並且它們在過去被修復過)。

其實...你可以改變URL的最後部分,任何東西在#之後。但是,主機名和路徑不能在不離開頁面的情況下進行更改。

相關問題