使用jQuery获取/更改/删除URL参数?

4

你想在加载完页面后修改URL吗? - Hacknightly
是的...确切地说,页面加载完成后。 - Alex
这很难做,主要是因为涉及安全问题。您是否无法使用您提供的任一插件?我想这些只会操作哈希值。 - Hacknightly
我没有尝试过它们,因为我首先要寻找一个更新的版本,看看是否有什么新的东西...如果没有,那么我会看看它们是否可行。从2009年到2012年,可能会出现更好的东西。 - Alex
操作查询参数是一件非常基础的事情,无论代码是全新的还是几年前的,都不会有太大的影响。 - simon
1个回答

10

使用纯 JS 很容易实现。

请参考来自 www.samaxes.com 的这段代码。

var queryParameters = {}, queryString = location.search.substring(1),
    re = /([^&=]+)=([^&]*)/g, m;

while (m = re.exec(queryString)) {
    queryParameters[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}

// Add new parameters or update existing ones
queryParameters['newParameter'] = 'new parameter';
queryParameters['existingParameter'] = 'new value';
location.search = $.param(queryParameters);

它不是完美的。但至少可以给你一些想法。

更新1:
这里是我为另一个答案编写的一个函数(记不清了)。它运行得非常好。


location.search 会重新加载页面吗?如果这对操作者有效,我想这没问题。但我认为重新加载是不可取的。 - Hacknightly
不。location.search 包含添加了 ? 的查询字符串。它是一个字符串。 - Shiplu Mokaddim
在控制台输入 location.search = "foobar" 会导致页面重新加载。 - Hacknightly
哦,好的,这样更有意义。做得好。 - Hacknightly
是的,但这仅用于设置...而不是获取现有值...对吗? - Alex
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接