【问题标题】:Anchors in links链接中的锚点
【发布时间】:2012-07-25 05:45:12
【问题描述】:

给定:

  • Tom — 拥有支持 pushState 的现代浏览器
  • Fred — 浏览器不支持 pushState
  • 由 Backbone 提供支持的 super.app Web 应用程序

Tom 浏览到存在#special-offer 部分的products/1 页面。

Backbone 是否允许 Tom 与 Fred 共享链接,包括指向特价部分的锚点:http://super.app/products/1#special-offer

Fred 会被重定向到http://super.app/#products/1(例如:没有#special-offer)吗?

换句话说,Backbone 是否允许使用锚点?

【问题讨论】:

    标签: backbone.js backbone-routing


    【解决方案1】:

    我在这里进行了测试http://bl.ocks.org/abernier/raw/3183257/

    看来是:

    • 锚点可用于支持 pushState 的浏览器:http://bl.ocks.org/abernier/raw/3183257/product1.html#special-offer
    • 对于 IEhttp://bl.ocks.org/abernier/raw/3183257/#product1.html 例如:没有#special-offer

    我唯一需要注意的是禁用基于哈希的历史浏览器的锚点,方法是:

    if (!Backbone.history._hasPushState) {
      $('body').delegate('a[href^=#]', 'click', function (e) {
        e.preventDefault();
      });
    }
    

    【讨论】:

      【解决方案2】:

      Backbone 在其模块RouterHistory 中有一个非常可定制的hash URL 片段

      【讨论】:

      • 有趣的是您的链接中有锚点 :) 但不幸的是,您在此处引用的 Backbone 的文档不涉及锚点。所以它让我的问题没有答案......
      • 我一直在旧的 Backbone 项目中使用 基于哈希的 URL 片段,所以我认为它支持它,也许我理解错误你的 URL 锚 i> 描述,但我想我没有。我的链接中的文档几乎隐藏了有关 基于哈希的 URL 片段 的 cmets,因为它增加了使用 HTML5 history API 的重要性,但您可以阅读 “直到最近,哈希片段(#page) 用于提供这些永久链接...""...路由器处理优雅的回退和对 URL 片段版本的透明转换"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多