我使用'window.location.hash'将“#something”添加到URL而不刷新页面。
我想知道如何使用斜杠(/)代替哈希(#)。
为什么呢?我有导航标签,我使用jQuery和Ajax动态加载数据。启用javascript后,会在URL的末尾添加“#something”以获取数据。当javascript被禁用时,它会重定向到'/ something'。所以我想为两者伪造相同的URL。
而不是http://site.com/section#something
- > http://site.com/section/something
感谢。
答案 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网站。