Javascript BackboneJS-干扰正常哈希行为

Javascript BackboneJS-干扰正常哈希行为,javascript,backbone.js,Javascript,Backbone.js,我正在使用BackboneJS及其路由器为一个简单页面提供服务 在我的一个DOM元素上,我有 <div id="1234">Content</div> 内容 当我去 我希望页面滚动到该DIV所在的位置(这是预期的行为) 但由于我使用的是主干网,它肯定会干扰它,因为它不能正常工作。我读了主干文档,它似乎没有识别哈希值,我想我可以为所有不匹配的设置“Catch all”路由() 但是,我实际上如何使其按我希望的方式运行(即使页面滚动到右侧div)?好的,首先是一点背景。

我正在使用BackboneJS及其路由器为一个简单页面提供服务

在我的一个DOM元素上,我有

<div id="1234">Content</div>
内容
当我去

我希望页面滚动到该DIV所在的位置(这是预期的行为)

但由于我使用的是主干网,它肯定会干扰它,因为它不能正常工作。我读了主干文档,它似乎没有识别哈希值,我想我可以为所有不匹配的设置“Catch all”路由()


但是,我实际上如何使其按我希望的方式运行(即使页面滚动到右侧div)?

好的,首先是一点背景。在web的早期,浏览器有这些东西叫做锚,或者你现在知道的,
a
标记:

<a name="foo">
您可以在此处阅读有关该方法局限性的更多信息:

但简短的版本是,它只适用于此处标记为绿色的浏览器:

另一种方法是使用jQuery重新创建自己的锚定系统。基本上,您可以在没有任何路由匹配时创建一个故障诊断:

 if (!Backbone.history.start() {
然后在该故障诊断中,您可以使用jQuery手动滚动到所需的点:

     $('html, body').animate({
         scrollTop: $('#' + window.location.hash).offset().top
     }, 1000);
你也可以选择定义自定义路线,而不是使用故障排除法,但我会让你自己决定


除了这些选项之外,PRAMOD链接到一个包含答案的问题,还可以考虑其他选项(比如修改骨干路由器来构建滚动功能)。.

查看您使用的是哪个版本的BackboneJS?有人知道如何使用ReactJS完成手动滚动。在评论中单独提问是获取堆栈溢出帮助的错误方式。如果你真的为你的问题开始一个新的(堆栈溢出)问题,你会获得更大的成功。
 if (!Backbone.history.start() {
     $('html, body').animate({
         scrollTop: $('#' + window.location.hash).offset().top
     }, 1000);