我开始关注HTML5新历史API
但是,我有一个问题。如何处理页面刷新?
例如,用户单击链接,该链接由js函数处理,
异步加载页面内容
使用history.pushState()
更改网址用户刷新页面,但服务器上当然不存在URL
你如何处理这样的情况?使用哈希解决方案没有问题
由于
答案 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将处理实际路径。