2010-08-01 132 views
17

我想知道是否可以在不重新加載頁面的情況下更改瀏覽器中URL的內容?在不重新加載頁面的情況下更改URL

我使用jQuery和Ajax來加載我的頁面的新部分。當我選擇「產品一」時,直接鏈接將是mysite.com/product1,「產品二」將是mysite.com/product2,但我不想將網站重新加載到這些頁面。

回答

-3

你不能。只有當你改變哈希,就像sAc告訴你的一樣。

但是..請問爲什麼?

+2

我不是OP,但我覺得它有用,當你通過AJAX改變你的內容,然後你的訪問者希望存儲他正在尋找的頁面在書籤/通過電子郵件發送/等.. – nothrow 2010-08-01 08:43:36

+0

像Yossarian說,這是我的原因之一。另外,因爲頁面加載的負載較少使用ajax,並且加載比較好看。 – 2010-08-01 19:43:38

+0

@Yossarian:我問他爲什麼要使用site.com/product,就像最初的Q(不是哈希)。 @Paul:如果你改變了超過4-50%的頁面內容,你可能想重新考慮你的策略,因爲你將通過頁面傳輸獲得的速度將被DOM操作時間取消:) – 2010-08-02 06:18:06

1

CAN這樣做。儘管您可能需要一個現代瀏覽器。看看這個頁面:http://www.20thingsilearned.com/由Google Chrome團隊創建(我使用Chrome 9來閱讀它)。更改頁面不會重新加載整個網頁,而是更改URL。

15

它現在可以通過HTML_5 ..

焯芬此鏈接...​​3210

也是Facebook和使用Hash(#)旁邊這個TRIC谷歌屬性

+0

太棒了!對於跨瀏覽器支持,您可以使用像history.js的圖書館https://github.com/balupton/history.js – Pepper 2011-07-08 19:09:10

+2

它看起來像鏈接被破壞... – 2016-11-07 16:10:18

7

這是可能的HTML5。查看演示here

您可以將URL更改爲同一個域中的另一個URL,但出於安全原因無法更改域。

有關詳細信息,請參閱HTML5 specification中的history接口。

7

只用這一個

window.history.pushState("object or string", "Title", "/new-url"); 
+0

小心IE瀏覽器<10:http:// caniuse的.com /#搜索= pushState的。使用像history.js這樣的polyfill。 – Johann 2015-02-24 22:31:38

相關問題