2011-08-11 84 views
2

我正在建立一個網頁,其中有一種目錄,它顯示了當前項目及其描述,以及其他項目的縮略圖,如果我點擊不同項目的縮略圖,我有一些腳本來改變描述和大圖像到所需的項目。問題是我希望這反映在URL中,以便用戶可以將URL作爲鏈接發送給其他人以顯示所需的項目。但我還沒有找到一種方法來更改網址,而無需重新加載頁面,對於美學,我不想重新加載頁面。 任何想法如何做到這一點?更新的網址沒有明顯的重新加載

+0

可能的重複項:http://stackoverflow.com/questions/824349/modify-the-url-without-reloading-the-page http://stackoverflow.com/questions/3338642/updating-address-bar-with -new-url-without-hash-or-reloading-the-page http://stackoverflow.com/questions/4371705/how-to-rewrite-url-without-refresh-like-github-com http:// stackoverflow .com/questions/5895151/can-i-change-the-url-string-in-the-address-bar-using-javascript http://stackoverflow.com/questions/4973777/how-does-github-change- url-but-not-re-loaded – JJJ

回答

5

解決方法是使用location.hash。另外,要正確實施它,您可能需要閱讀谷歌的這篇文章:Making AJAX Applications Crawlable

+0

呃。而是相同的答案。 :) – Gajus

+0

哈哈是啊,我們在同一時間寫答案。我在你之後6秒發佈我的。 –

+0

*之前6秒*。並在我前面近一分鐘。 :-)我得到的所有討厭的例子。 –

1

通常,當前廣泛兼容的方式是使用散列,如:

http://myniftystore.com/catalog#11321R-red-shirt

然後

http://myniftystore.com/catalog#11321B-blue-shirt

然後

http://myniftystore.com/catalog#95748B-blue-slacks

...當你瀏覽項目。您可以通過分配location.hash屬性來更改頁面上的散列,而無需重新加載。這要求您首先使用一些客戶端腳本來確定用戶首次訪問URL時顯示的內容(通過檢查location.hash)。

谷歌有一個proposal瞭如何使這些東西可以抓取。就個人而言,我認爲他們通過要求奇怪的hashtag(#!xyz而不僅僅是#xyz)真的搞砸了它,但如果它是我或Google,我想我知道誰會贏。 :-)

灌進派克有整個history API,但支持不是在地面上很厚,但(尤其是不  — 咳嗽   —某些供應商)。

3

沒有可靠的(跨瀏覽器)的方式來更改地址欄中的URL而無需重新加載頁面 - 改變window.location.href(我想象的是你想要做的)的行爲告訴瀏覽器重新加載頁面(即使在某些瀏覽器中,window.location.href = window.location.href;也會這樣做)。

我認爲你必須在頁面上放置一個[鏈接到這個頁面]元素並改變它 - 你可以很容易地用當前的URL填充它在服務器端或者使用window.onload函數並且在與您一直在使用element.valueelement.innerHTML(取決於您選擇包含鏈接的元素的類型)相同。

您可以使用散列(請參閱window.location.hash屬性)執行此操作,但這可能會以編程方式混亂。

相關問題