ユーザーがブラウザの戻る/進むボタンを押したことを検出する方法を見つけようとしています。
私はバックボーンを使用してルートを処理し、バックボーンを使用してビューをレンダリングしています。
問題は、どこからでもこのページ変更イベントにフックできないことです。
ビューの初期化関数にログを入れてみましたが、戻るボタンを使用してもトリップしません。
このページの変更を他にどのように検出するかは本当にわかりません。
ユーザーがブラウザの戻る/進むボタンを押したことを検出する方法を見つけようとしています。
私はバックボーンを使用してルートを処理し、バックボーンを使用してビューをレンダリングしています。
問題は、どこからでもこのページ変更イベントにフックできないことです。
ビューの初期化関数にログを入れてみましたが、戻るボタンを使用してもトリップしません。
このページの変更を他にどのように検出するかは本当にわかりません。
route
コールバックをバックボーンイベントにバインドできます。
Backbone.history.on('route', function () {
// Do your stuff here
});
Backbone.history.getFragment()
あなたはあなたが立っていたかどうかを知るために使うことができます。
戻るボタンを押すと、ポップステートイベントがトリガーされます。
私はこのコードを使用しています:
// listening for the browser's back button
window.addEventListener('popstate', function(e) {
router.navigate(Backbone.history.getFragment(), { trigger: true, replace: true });
});
とメソッドを拡張しBackbone.Router
てオーバーロードできます。これらの2つの方法ですべてのページ変更を処理します。したがって、バックボーンファイルからそれらを再コピーして、それで遊んでください。route
open
明らかに、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))
}
アプリケーションを開始するときに使用Backbone.Router
し、忘れないようにする必要がありBackbone.history.start()
ます。
いくつかの有用な情報はこことここで見つけることができます
実際、2番目のリンクは記事ではなくブログです。そして、それを書いた人は本当にそのトピックについてたくさん知っているようです。
UPD:URLが変更されると、バックボーンのルーターがバインドされたメソッドを起動するという考え方です。したがって、ロジックをこのメソッドに配置するだけで、この方法でそれを追跡できます。多分それは非常に自動化されていない方法であり、いくつかのコードを書くのにかかるでしょうが、私はそれがうまくいくはずだと思います。