12

ユーザーがブラウザの戻る/進むボタンを押したことを検出する方法を見つけようとしています。

私はバックボーンを使用してルートを処理し、バックボーンを使用してビューをレンダリングしています。

問題は、どこからでもこのページ変更イベントにフックできないことです。

ビューの初期化関数にログを入れてみましたが、戻るボタンを使用してもトリップしません。

このページの変更を他にどのように検出するかは本当にわかりません。

4

5 に答える 5

10

routeコールバックをバックボーンイベントにバインドできます。

    Backbone.history.on('route', function () {
        // Do your stuff here
    });

Backbone.history.getFragment()あなたはあなたが立っていたかどうかを知るために使うことができます。

于 2013-05-31T13:55:24.580 に答える
3

戻るボタンを押すと、ポップステートイベントがトリガーされます。

私はこのコードを使用しています:

// listening for the browser's back button
window.addEventListener('popstate', function(e) {
    router.navigate(Backbone.history.getFragment(), { trigger: true, replace: true });
});
于 2015-05-11T18:33:45.380 に答える
1

とメソッドを拡張しBackbone.Routerてオーバーロードできます。これらの2つの方法ですべてのページ変更を処理します。したがって、バックボーンファイルからそれらを再コピーして、それで遊んでください。routeopen

于 2012-04-19T19:44:03.020 に答える
0

明らかに、GitHubでさえ、どのボタンが押されたかを検出する方法を知りません;)彼らはこのコードを使用します:

slideTo: function (a) {
      var b = this.pathFromURL(a),
         c = this.frameForPath(b),
         d = $("#slider .frame-center").attr("data-path") || "";
      c.is(".frame-center") || (d == "/" || b.split("/").length > d.split("/").length ?
        this.slideForwardTo(a) : this.slideBackTo(a))
} 
于 2012-06-23T19:40:31.960 に答える
-2

アプリケーションを開始するときに使用Backbone.Routerし、忘れないようにする必要がありBackbone.history.start()ます。

いくつかの有用な情報はここここで見つけることができます

実際、2番目のリンクは記事ではなくブログです。そして、それを書いた人は本当にそのトピックについてたくさん知っているようです。

UPD:URLが変更されると、バックボーンのルーターがバインドされたメソッドを起動するという考え方です。したがって、ロジックをこのメソッドに配置するだけで、この方法でそれを追跡できます。多分それは非常に自動化されていない方法であり、いくつかのコードを書くのにかかるでしょうが、私はそれがうまくいくはずだと思います。

于 2012-04-19T19:56:08.327 に答える