History.pushState和页面刷新

时间:2011-08-15 16:04:09

标签: javascript

我开始关注HTML5新历史API

但是,我有一个问题。如何处理页面刷新?

例如,用户单击链接,该链接由js函数处理,

异步加载页面内容

使用history.pushState()

更改网址

用户刷新页面,但服务器上当然不存在URL

你如何处理这样的情况?使用哈希解决方案没有问题

由于

4 个答案:

答案 0 :(得分:5)

这确实需要服务器端支持。 .pushState的理想用途是允许服务器智能地处理来自JavaScript应用程序的URL。

这可以通过重新提供相同的JavaScript应用程序,让它检查window.location,或者像在普通Web应用程序中那样在服务器上呈现该URL的内容。具体情况显然取决于你正在做什么。

答案 1 :(得分:2)

您需要为复制和粘贴的虚假URL执行服务器端重定向 这完全取决于您使用的服务器端技术。没有JavaScript方法,但在404页面中编写一个疯狂的函数,根据传入的URL重定向用户,这不是一个好的解决方案。

答案 2 :(得分:1)

  

用户刷新页面,但当然URL不存在   在服务器上

这是什么意思?我有一种感觉,你的假设是错误的。 实际上是的,重点是开发人员应该提供(服务器端或客户端)url到页面状态通信的实现。

如果再一次,我的问题是正确的。

答案 3 :(得分:0)

如果您在服务器上使用ASP.NET MVC,则可以将以下内容添加到RegisterRoutes函数中:

       routes.MapRoute(
            name: "Default",
            url: "{*url}",
            defaults: new { controller = "Home", action = "Index" }
       );

这会将所有请求发送到HomeController的Index操作,您的UI将处理实际路径。