Backbone.js : récupérer l’url de la page précédente

backbone-jsLe bout de code suivant est un exemple de routeur Backbone.js qui permet de récupérer le précédent fragment (ce qu’il y a après #). Ce fragment peut par exemple être utile à des fins analytiques.

var AppRouter = Backbone.Router.extend({

    /*les différentes routes de l'application*/
    routes: {
        "!"                  : "home",
        "!contact"           : "contact",
        "!article/:titre"     : "article"
    },
    initialize: function () {
        this.on("all", this.storeRoute);
        this.history = [];
    },
    /* ajout du fragment courant dans "history" */
    storeRoute: function() {
        return this.history.push(Backbone.history.fragment);
    },
    /* retourne le précédent fragment */
    previous: function(){
        var previous = null;
    	if (this.history.length > 0) {
           previous = this.history[this.history.length -1];
        }
    	return previous;
    },    
    home: function () {
    	/*...*/
    	App.Router.displayPrevious();
    	/*...*/
    },
    article: function(titre){
    	/*...*/
    	App.Router.displayPrevious();
    	/*...*/
    },
    contact: function(){
    	/*...*/
    	App.Router.displayPrevious();
    	/*...*/
    },
    /* affiche le résultat dans la console */
    displayPrevious: function (){
    	console.log(this.previous());    	
    }
});

source: http://stackoverflow.com/questions/17649913/how-to-detect-backbone-history-referer-history-length

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Une réflexion au sujet de « jQuery: comment utiliser autocomplete avec .live() »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

jQuery: effectuer une requête AJAX synchrone

Le code suivant est un exemple de requete AJAX effectuée avec jQuery.

var string = 'default';
$.get('/index/test',
  {string: 'test'},
  function(data){
    string = data;
  }
);
alert(string);

Le problème avec ce code est que la valeur de « string » va être affichée avant qu’elle soit mise à jour par la requête AJAX. En effet, la suite du code est exécutée avant que la requête soit terminée. La valeur de « string » va donc être « default ».

Pour ordonner à Javascript d’attendre la fin de la requête pour continuer l’exécution du code, il faut insérer la ligne suivante avant l’exécution de la requête:

$.ajaxSetup({async: false});

Exemple:

var string = 'default';
$.ajaxSetup({async: false});
$.get('/index/test',
  {string: 'test'},
  function(data){
    string = data;
  }
);
alert(string);
//pour remettre la valeur par défaut:
$.ajaxSetup({async: true});

Cette fois ci, la valeur de « string » lors de son affichage sera « test ».

Une réflexion au sujet de « jQuery: effectuer une requête AJAX synchrone »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Une réflexion au sujet de « Équivalent de la fonction print_r en Javascript »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment créer un écouteur d’évènements pour JW Player

Ajouter un eventListener sur le lecteur JW Player permet de récupérer un tas d’infos sur le lecteur.
Par exemple il est possible d’ajouter un écouteur pour récupérer l’état de la vidéo (lecture, en pause, etc), la position de lecture, les changements de volume …

Voici comment déclarer un listener:

//pour ajouter un écouteur sur le temps et l'état de la vidéo
player.addModelListener("TIME", "timeListener");
player.addModelListener("STATE","stateListener");
//pour ajouter un écouteur sur les changements de volume on utilise une méthode différente
player.addControllerListener("VOLUME", "volumeListener");

Il reste maintenant à traiter ces informations, exemple avec le stateListener:

function stateListener(obj) {
  //affiche une alerte lorsque l'état de la vidéo est "COMPLETED"
  if(obj.newstate == "COMPLETED")
  {
    alert('COMPLETED');
  }
}

Pour info, les autres états sont: BUFFERING PLAYING PAUSED IDLE et vous pouvez aussi récupérer l’ancien état en affichant obj.oldstate .

Pour le listener « timeListener » utilisez obj.position pour récupérer la position. Exemple:

function timeListener(obj) {
  alert(obj.position);
}

Enfin pour récupérer le volume:

function volumeListener(obj)
{
  alert(obj.percentage);
}

Bon courage et à bientôt!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *