JavaScript: 如何在window.location.hash中获取和设置变量?

6

你有没有一个好的方法来获取和设置window.location.hash中的变量?

以这样的URL为例:

domain.com/#q=1&s=2

我希望有一种无压力的方式 - 使用JavaScript或jQuery - 在页面加载时检查qs的值,并在页面事件后更改它们。
我已经找到了一些获取哈希变量的代码,但没有合理的设置方法。
我是否忽略了一些非常明显的东西,还是需要自己解决(并发布!)?
谢谢。

我可以编写自己的正则表达式(regex)——只是想知道是否有更简洁的方法。 - AP257
使用正则表达式,设置/获取只需要一行代码。这是最简单的方法。 - Šime Vidas
3个回答

3

我没有使用过,但是有一个jHash

jHash允许您以与服务器端查询字符串类似的方式处理'location.hash'值。

此库利用HTML5的"onhashchange"事件,但还包括回退,使变更通知在旧的Web浏览器中仍然正常工作。


1

jquery.url.js似乎不支持哈希参数,可惜。 - AP257
而jQuery URL解析器只获取锚点的总值,而不是其中的参数。 - AP257
@AP257:那么你可能需要jQuery BBQ。 - Matt Ball
是的,BBQ看起来像是最好的解决方案。谢谢! - AP257
@gonchuki:你说得对,谢谢!我会把那个编辑到我的答案中。 - Matt Ball

0
JHash 对我来说不起作用,因为我想让它立即触发路由。我个人使用 routie 替代它。
它能够像 jHash 一样实现高级路由,但在页面加载时会正确触发。
下面的代码将匹配 example.com/#users/john。
routie('users/:name', function(name) {
    //name == 'bob';
});

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