我一直面临主干路由的这个问题,并认为我已经花了足够的时间调查:
这里有两个 url:/ 和 /post/:id。/ 页面通过 /post/:id 链接到各种帖子。当我单击帖子链接时,帖子页面会加载,但骨干网会立即将 url 更改为 /。这不仅看起来很糟糕,而且还会在错误的时间触发路由处理程序。我没有做任何特别的事情......这是我的代码:
PostRouter = Backbone.Router.extend({
routes : {
"" : "doHome"
},
initialize : function() {
},
doHome : function() {
// do some stuff before navigating
window.location = "/";
}
})
...
var router = new PostRouter();
Backbone.history.start({ pushState: Modernizr.history });
同样,在帖子页面加载后立即调用 doHome 函数。显然,这会导致站点导航回主页。我显然可以删除对 window.location 的调用以防止这种情况发生,但 url 仍会更新为根 url,这是不可接受的。
提前致谢!
更新 1:
如果我直接转到“localhost:808/post/:id”,则 url 立即更改为“localhost:8080/”。但是,如果我在私人浏览器窗口中执行完全相同的操作,则不会观察到这种行为。
更新 2:
鉴于我在更新 1 中发现的情况,我发疯了,从头开始:我清除了 4 周的浏览历史记录(叹气),停止本地服务器并清理所有持久会话并重新部署我的应用程序。唉,它奏效了!也就是说,我没有将此列为解决方案,因为它无助于解释究竟发生了什么以及如何解决它。此外,这让我担心我网站的用户会发生这种情况。我无法告诉他们发生了这种情况,即使我这样做了,我也无法告诉他们如何最终修复它(清除 4 周的浏览器历史记录不是一种选择!)。任何人都可以对可能发生的事情有所了解吗?