Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

backbone routes – detecting browser back button press

I am trying to find a way to detect when the user has pressed the back / forward button in their browser.

I am using backbone to handle routes, along with backbone to render my views.

The issue is I can not hook into this page change event from anywhere.

I tried putting a log in my initialize function for my views .. but it is not tripped when i use the back button.

I am really not sure how else to detect this page change.

like image 981
samccone Avatar asked Apr 19 '12 19:04

samccone


3 Answers

You can bind a callback to Backbone route event:

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

You can use Backbone.history.getFragment() to know were you are standing.

like image 150
amypellegrini Avatar answered Sep 19 '22 06:09

amypellegrini


When the back button is pressed a popstate event is triggered.

I'm using this piece of code:

// listening for the browser's back button
window.addEventListener('popstate', function(e) {
    router.navigate(Backbone.history.getFragment(), { trigger: true, replace: true });
});
like image 3
Claudiu Avatar answered Sep 22 '22 06:09

Claudiu


you can extend the Backbone.Router and overload the route and the open method. You have all page changings handled in those two methods. So just recopy them from the backbone file, and play with it.

like image 1
Tronix117 Avatar answered Sep 19 '22 06:09

Tronix117