2010-06-07 173 views
3

如何將變量追加到帶有JavaScript的URL而無需導航到網址?Javascript:如何將變量追加到url?

感謝

+1

你怎麼想這個實現的?如果你不導航到它,那麼這個URL將不會是表示當前資源的URL,因此與任何舊字符串沒有區別。在這種情況下,只需使用正常的JS字符串連接功能 – 2010-06-07 15:00:14

+0

mhm您沒錯,我想將該字符串存儲在url中,所以當我點擊頁面中的任何其他鏈接時,此參數始終會添加到原始鏈接中。 – aneuryzm 2010-06-07 16:10:15

回答

4

您可以修改window.location.hash。其他任何事情都會導致導航。

+0

修改'.hash'應該會導致瀏覽器跳轉(如果您願意的話)到相應的文檔位置(如果已定義)。 – Tomalak 2010-06-07 15:01:53

+0

@Tomalak:因此,如果錨點未定義,瀏覽器將*出現*不會導航到任何地方,對吧? – Piskvor 2010-06-07 15:12:54

+0

@Piskvor:是的,它甚至不會閃爍。這是一種將數據附加到URL的可靠方法。許多webapps都這樣做。 Gmail就是一個例子。 – 2010-06-07 15:18:48

0

我不知道這一點,但它是如何與這個?:

document.url + myVar + 'myString'; 

雖然JavaScript是不是我的語言:P

6

將變量追加到哈希(如Matthew suggested),你可以在普通的JavaScript中執行以下操作:

window.location.hash = 'varA=some_value;varB=some_value'; 

這會將#varA=some_value;varB=some_value添加到您的URL中。它不會刷新頁面,除非散列值等於文檔中的錨點名稱或元素ID。

然後檢查是否哈希值存在,只要做到以下幾點:

var i, variables = window.location.hash.split(';'); 

if (variables.length > 0) { 
    // Variables present in hash 
    for (i = 0; i < variables.length; i++) { 
     keyValuePair = variables.split('='); 
     // keyValuePair[0] would be the key (variable name) 
     // keyValuePair[1] would be the value 
    } 
} 
else { 
    // No variables in the hash 
} 

您可能還需要檢查以下堆棧溢出後在不同相關的散列部的URL encoding問題瀏覽器:

+0

我確定必須有一個'encodeURIComponent()'/'decodeURIComponent()'調用某個地方纔能可靠地工作。 – Tomalak 2010-06-07 15:34:05

+0

@Tomalak:是的,好點...我正在修復我的例子。 – 2010-06-07 15:44:11

相關問題