【问题标题】:Backbone Routing in IE - Get rid of the # sign?IE 中的骨干路由 - 去掉 # 符号?
【发布时间】:2012-10-20 10:37:06
【问题描述】:

在使用主干路由时,有什么方法可以阻止# 出现在地址栏中,pushState 与否?

【问题讨论】:

  • IE 10 之前的版本不支持 History API。

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


【解决方案1】:

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

您的选择是下拉到普通(非 Ajax)链接/表单提交/等,或者使用 hashbang hack。

我对骨干网的了解不够肯定,但以下内容可能足以回退到正常路由:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多