可以在没有页面刷新window.location的情况下使用斜杠(/)代替哈希(#)?

时间:2010-06-23 09:47:16

标签: javascript jquery url

我使用'window.location.hash'将“#something”添加到URL而不刷新页面。

我想知道如何使用斜杠(/)代替哈希(#)。

为什么呢?我有导航标签,我使用jQuery和Ajax动态加载数据。启用javascript后,会在URL的末尾添加“#something”以获取数据。当javascript被禁用时,它会重定向到'/ something'。所以我想为两者伪造相同的URL。

而不是http://site.com/section#something - > http://site.com/section/something

感谢。

4 个答案:

答案 0 :(得分:3)

您可以在之后使用任何组合,但是您的问题的答案是,如果没有重复,您就无法做到引导用户。

能够在没有重定向的情况下使用URL会在某些级别上出现安全问题(您是否也可以更改域名?为什么不呢?....看看这个兔子洞在哪里?)。例如,通过JavaScript更改您的网址,说:http://www.mybank.com(为什么我的银行不使用SSL?糟糕的银行,不好!)将成为网络钓鱼者的梦想...所以浏览器不允许像网页那样搞乱网页这一点......并非真的把你带到那里。

答案 1 :(得分:3)

看看this article。基本上,它可以让你这样做:

history.pushState({}, 'New Title', 'new_page.html');

这会更新历史记录和位置栏,但实际上并未加载页面。这就是你想要的,但它是HTML5的一部分,目前很少(如果有的话)浏览器支持它。坚持使用哈希是一个更好的主意。

答案 2 :(得分:1)

History.pushState(请参阅@ Casey帖子中的链接,或Kyle Scholz' blog)出现在最新版本的Safari和Firefox中,而Modernizr 1.5现在测试浏览器对它的支持。我今天刚开始玩这个,它似乎完全符合你的要求。

我意识到这对旧浏览器没有帮助;那里仍然需要某种window.location.hash技巧。

答案 3 :(得分:0)

为什么不部署SWFAddress

它会以../#/section/something的形式为您提供网址,并且应该是您所需要的。它广泛用于许多关于SEO考虑的Flash / AJAX网站。