IE中的骨干路由 - 摆脱#符号?

时间:2012-10-20 10:37:06

标签: javascript internet-explorer backbone.js pushstate backbone-routing

在使用Backbone routing,pushState时,有没有办法阻止#出现在地址栏内?

2 个答案:

答案 0 :(得分:0)

@Kay,您的Babckbone应用程序应该可以在所有主流浏览器中正常运行,IE8-9仍然被广泛使用(不幸的是,甚至是IE6-7)。使用哈希并且没有pushState更可靠,许多大型应用程序使用它们(例如Facebook)。问题是,如果您在链接中使用硬编码路由,并且它们不是哈希值,那么如果pushState在浏览器中不起作用,则会被搞砸。因此,您必须使用pushState并在路由器中使用正常路径名,或者不要使用pushState并使用哈希值。后者更适合IMO。

答案 1 :(得分:0)

当前版本的IE不支持pushState。 (它出现在IE10预览中)。

您的选择要么是下拉到正常(非Ajax)链接/表单提交/等,要么使用hashbang hack。

我不知道骨干是否足以确定,但以下可能足以回退到正常路由:

if (window.history && window.history.pushState) {
    Backbone.history.start({pushState: true});
}