在链接锚(Anchors in links)

2019-09-20 06:58发布

鉴于:

  • 汤姆 - 谁拥有现代化的浏览器是pushState的启用
  • 弗雷德 - 谁拥有浏览器未启用pushState的,这
  • 一个super.app搭载骨干网络应用程序

汤姆浏览到products/1页,其中一个#special-offer部分存在。

是否允许骨干汤姆与弗雷德共享一个链接包括锚的特殊优惠部分: http://super.app/products/1#special-offer

弗雷德会被重定向到http://super.app/#products/1 (如:无#special-offer )?

换句话说,没有骨干允许使用锚?

Answer 1:

我在这里度过的测试http://bl.ocks.org/abernier/raw/3183257/

看来,YES:

  • 锚可以启用pushState的的浏览器中使用: http://bl.ocks.org/abernier/raw/3183257/product1.html#special-offer
  • 而对于IE <10,它被转换为http://bl.ocks.org/abernier/raw/3183257/#product1.html例如:无#special-offer

我不得不采取关心是基于哈希的历史记录浏览器禁用锚,通过唯一的事情:

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


Answer 2:

骨干都有其模块中的一个非常定制使用哈希网址片段的路由器和历史 。



文章来源: Anchors in links