jQuery(function() { /* ****** GESTION DE L'HISTORIQUE DE NAVIGATION AVEC AJAX ****** */ // http://benalman.com/projects/jquery-hashchange-plugin/ /* Bind an event to window.onhashchange that, when the hash changes, gets the hash and load the appropriate page */ jQuery(window).hashchange(function(){ var hash = location.hash; // tag/ancre de la page qu'on veut visiter. var found = 0; // found permet de savoir si le tag/ancre courant figure dans la liste des tags de la page courante. if (hash=="") //Correspond à l'affichage par défaut lorsque la page est chargée pour la première fois. { /* var update = new Function(jQuery("a[href='#triDateDesc']").attr('click')); //On crée une fonction afin d'éviter l'utilisation de eval qui semble dangereuse update(); */ clListing.pageX(1,10,1,2); /* CECI EST IMPORTANT ET DÉFINIT LA LISTE À AFFICHER PAR DÉFAUT. DANS LE CAS PRÉSENT, ON AFFICHE LA PAGE 1 DES RÉSULTATS TRIÉS SUIVANT LE CHAMP DONT LE NUMÉRO DE REPRÉSENTATION EST 1 (date_enregistrement) ET DANS LA DIRECTION 2 (DESC). LA VALEUR 10 QUI REPRÉSENTE EN FAIT LE NOMBRE DE RÉSULTATS PAR PAGE EST ICI INSIGNIFIANT, CAR LE NOMBRE DE RÉSULTATS PAR PAGE EST FOURNI PAS UN SELECT */ } else { // On itère parmi les liens pour déterminer celui correspondant au hash actif jQuery('a,#liste_tris option').each(function() { var element = jQuery(this); var element_href = element.attr('href'); if (element_href !== undefined) { var position = element_href.indexOf("#"); if (position != -1) element_href = element_href.substring(position); if ((element_href === hash) && !found) { found = 1; var update = new Function(element.attr('click')); /* On a remplacé l'attribut onclick par l'attribut non-standard click afin d'éviter un double-chargement des données de la page par un appel double de pageX (dans l'évènement onclick et dans la fonction update */ //On crée une fonction afin d'éviter l'utilisation de eval qui semble dangereuse update(); } } }); if (found==0) /* Si le tag de la page à accéder (cas d'un historique) ne se trouve pas dans la liste des tags de liens (contenu du href) de la page active, on décompose le tag pour obtenir les paramètres appropriés pour la gestion de l'historique. Notre historique ne mémorise pas, pour l'affichage des données, les informations sur le nombre de résultats par page, le fonds, le mode de paiement, les dates */ { /* les tags ont la forme pA-nB-oC-dD où A, B, C et D sont des chiffres identifiant le numéro de page, le nombre de résultats par page, le nombre représentant le champ de tri, la direction du tri (1=ASC, 2=DESC) */ pos1 = hash.indexOf("-",0); pp = hash.substr(2,pos1-2); pos2 = hash.indexOf("-",pos1+1); nbrespp = hash.substr(pos1+2,pos2-pos1-2); pos3 = hash.indexOf("-",pos2+1); order = hash.substr(pos2+2,pos3-pos2-2); dir = hash.substr(pos3+2,1); clListing.pageX(pp,nbrespp,order,dir); } } }) // Since the event is only triggered when the hash changes, we need to trigger // the event now, to handle the hash the page may have loaded with. jQuery(window).hashchange(); });