2010-06-07 112 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

相关问题