2012-04-19 12 views
12

ユーザーがブラウザで戻る/進むボタンを押したときに検出する方法を見つけようとしています。バックボーンルート - ブラウザの戻るボタンの検出

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

問題はどこからでもこのページ変更イベントにフックできません。

私のビューの初期化関数にログを書き込もうとしましたが、戻るボタンを使用するとトリップしません。

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

答えて

-2

Backbone.Routerを使用し、アプリケーションを起動するときにはBackbone.history.start()を忘れないようにしてください。

いくつかの有用な情報

herehere

実際には、第2のリンクは記事ではありませんが、ブログを見つけることができます。そしてそれを書いた人は本当にその話題についてたくさん知っているようです。

UPD:アイデアは、あなたのURLが変わったときに、バックボーンのルータファイアバインドされたメソッドです。だからあなたはこの方法にあなたのロジックを置き、この方法でそれを追跡する必要があります。たぶんそれは非常に自動ではない方法で、いくつかのコードを書くのにかかるだろうが、私はそれがうまくいくと思う。

+2

ええ、私はそれを読んで。アイデアは、あなたのURLが変わったときに、バックボーンのルータファイアバインドされたメソッドです。だからあなたはこの方法にあなたのロジックを置き、この方法でそれを追跡する必要があります。たぶんそれは非常に自動ではない方法で、いくつかのコードを書くのにかかるだろうが、私はそれがうまくいくと思う。 – Ph0en1x

+0

@ Ph0en1x BackboneのHistoryオブジェクトを使用すると、サイト内をナビゲートするときに戻るボタンが押されたときに発生する 'popstate'イベントを監視するので、ソリューションを提供できるということは間違いありません。しかし、あなたの答えは、それがあなたが言っていることではなく、OPがBackbone.Historyを使って彼の問題を解決する方法であることを明確にしていません。 –

+1

おかしい、その答えには多くのマイナスがある。しかし、それ自体は2015年末にも意図的に修正されています。しかし、人々は慎重に読んでみたくないと思っているように見えます。彼らはスニペットをコピー・ペーストしたいだけです。 – Ph0en1x

1

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

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)) 
} 
10

あなたがバックボーンrouteイベントにコールバックをバインドすることができます。

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

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

+0

スニペットの最後に閉じ括弧がありません) – fadomire

3

戻るボタンを押すとポップステートイベントが発生します。

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

// listening for the browser's back button 
window.addEventListener('popstate', function(e) { 
    router.navigate(Backbone.history.getFragment(), { trigger: true, replace: true }); 
}); 
関連する問題