0

谷歌地图做这件事,如果我浏览到,比如说,澳大利亚,URL 更改为

https://www.google.com/maps/@-28.0345854,135.1500838,4z

我有兴趣在我的网络应用程序上做这样的事情。到目前为止,我有这个:

var baseurl = window.location.href.split("/@")[0]
window.history.replaceState( {} , 'foo', baseurl+'/@foo' );

这适用于将“/@foo”添加到 url

我的问题是,添加 /@foo 后,URL 不起作用,它是 404es。

我对修改浏览器的历史不感兴趣,这就是我使用 replaceState 而不是 pushState 的原因。

无论如何,有没有办法用js做到这一点?还是我需要服务器端代码来提供适当的页面?

谢谢你

4

1 回答 1

0

您“需要服务器端代码来提供适当的页面”。字符仍然是 URL的@一部分,因此需要由服务器处理。如果您只想处理这种情况的客户端,那么您想要的就是使用#。散列后的任何内容都处理客户端并且不会触发从服务器加载的新页面。

几个库使用它在单页 HTML 应用程序中复制路由。例如:

还有很多。

于 2014-06-28T02:32:29.937 回答