0

基本的に次のような関数があります。

function scroll(scrollTop) {
  $("body,html").animate({scrollTop: scrollTop});
}

また、バックボーン ルートでは、この関数を使用してページ上の位置にスクロールしようとしていますが、これも単純化されています。

var Router = Backbone.Router.extend({
  routes: {
    "": "index",
    "foo": "foo"
  },

  index: function () {
    scroll(0);
  },

  foo: function () {
    scroll($("#foo").offset().top);
  }
});

これは、ページの読み込み (「/foo」を読み込む場合)、手動で関数を呼び出す、または pushState (ハッシュ フラグメントではなく) ルートを利用する場合に正常に機能します。

しかし、ハッシュ フラグメント ルートを使用すると、アニメーションは失敗します。スクロール位置は変更されますが、アニメーションなしで即座に変更されます。

これに対する回避策はありますか?

4

1 に答える 1

2

あなたが説明しているのは、実際にはハッシュタグを変更するときのブラウザーの動作です。つまり、 からdomain.comへの移動domain.com#someIdは、ブラウザに id であるページの要素に「フォーカス」するように要求するようなものですsomeId。したがって、ウィンドウはこの要素に移動します。残念ながら、私はこれに対する修正を知りません。

可能な解決策を探しているときに見つけたこのディスカッションをご覧になることをお勧めします: Modifying document.location.hash without page scrolling

于 2013-04-18T14:36:15.470 に答える