基本的に次のような関数があります。
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 (ハッシュ フラグメントではなく) ルートを利用する場合に正常に機能します。
しかし、ハッシュ フラグメント ルートを使用すると、アニメーションは失敗します。スクロール位置は変更されますが、アニメーションなしで即座に変更されます。
これに対する回避策はありますか?