使用jQuery在点击时更改URL

13

4
可以的。请展示您迄今为止的代码,我们将看到您错在哪里。另外,您是指锚标签上的URL还是地址栏中的URL? - Huangism
1
你正在使用 window.location 吗? - Maess
@Huan 已添加了这个代码片段。 - Prithviraj Mitra
1
http://jsfiddle.net/aamir/Tn8BW/4/show/ - Aamir Afridi
显示剩余3条评论
2个回答

27

JavaScript 可以幸运地修改浏览器的历史记录并更改 URL。这个例子将在您的浏览器历史记录中添加新行,您可以使用“后退”按钮返回到该页。

HTML:

<a href="http://www.xyz.com/abc" id="link">abc</a>

jQuery:

$('#link').click(function() {
   window.history.pushState('obj', 'newtitle', '/abc');
   return false;
});

或者如果您想使用URL哈希(就像在您的代码中):

$('#link').click(function () {
    window.location.hash = 'xyz';
    return false;
});

那不会重定向,它会停留在页面上。


感谢 @aksu。在第一个例子中,它是否受到所有浏览器/版本的支持? - Prithviraj Mitra
它被广泛支持,甚至在一些移动浏览器中也是如此!您可以在http://caniuse.com/#feat=history上了解更多信息。 - aksu
搜索引擎会忽略标签,因此它们不会被索引。您可以在该博客上阅读更多内容http://www.phoenixrealm.com/the-power-of-the-hash-in-seo/。 - aksu
4
我想点踩,但是我的声望值太低了……千万不要使用"return false"来做这件事情。你需要做的是用"event.preventDefault()"! - Dunstkreis
1
更容易记住。 - aksu
显示剩余4条评论

3

你需要修改历史记录,而不是使用window.location。

示例代码:

var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");

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