【发布时间】:2012-10-20 10:37:06
【问题描述】:
在使用主干路由时,有什么方法可以阻止# 出现在地址栏中,pushState 与否?
【问题讨论】:
-
IE 10 之前的版本不支持 History API。
标签: javascript internet-explorer backbone.js pushstate backbone-routing
在使用主干路由时,有什么方法可以阻止# 出现在地址栏中,pushState 与否?
【问题讨论】:
标签: javascript internet-explorer backbone.js pushstate backbone-routing
当前版本的 IE 不支持pushState。 (它出现在 IE10 预览中)。
您的选择是下拉到普通(非 Ajax)链接/表单提交/等,或者使用 hashbang hack。
我对骨干网的了解不够肯定,但以下内容可能足以回退到正常路由:
if (window.history && window.history.pushState) {
Backbone.history.start({pushState: true});
}
【讨论】:
@Kay,您的 Babckbone 应用程序应该可以在所有主流浏览器中正常运行,并且 IE8-9 仍然被广泛使用(是的,不幸的是甚至 IE6-7)。使用散列而不使用 pushState 更可靠,许多大型应用程序都使用它们(例如 Facebook)。问题是,如果您在链接中使用硬编码的路由,并且它们不是散列,那么如果 pushState 在浏览器中不起作用,您就会被搞砸。因此,您要么必须使用 pushState 并在应该由路由器拾取的链接中使用普通路径名,要么不要使用 pushState 并使用散列。后者是更可取的 IMO。
【讨论】: