2010-09-03 17 views
1

Je vois beaucoup de personnes recommandent le hidden- iFrame hack qui est jQuery history plugin mais tout ce que je vraiment besoin est l'autre moitié de cette technique:Comment ajouter un état d'historique du navigateur?

function whenItemIsClicked() 
    { 
    window.location.hash = this.id; 
    //some other stuff, like Ajax 
    } 

//and then, if page is reloaded... 
$(document).ready(function(){ 
    var loc = window.location.hash; 
    //if there happens to be a hash, navigate to corresponding content 
    if(loc != '') $(loc).click(); 
}); 

Ces deux grand travail. Maintenant, je voudrais joindre ces deux lignes

var loc = window.location.hash; 
    if(loc != '') $(loc).click(); 

à un événement, mais il semble qu'il n'y ait pas un qui sera déclenchée systématiquement par le bouton de retour. Existe-t-il un moyen d'ajouter un état de l'historique du navigateur qui sauvegardera l'URL actuelle afin que la technique ci-dessus fonctionne?

Répondre

2

Il existe un événement appelé window.onhashchange bien que tout le monde ne le supporte pas encore, mais ... there's a plugin by Ben Alman pour résoudre ce problème.

Le plugin fait fonctionner le navigateur croisé en utilisant window.onhashchange (l'événement natif) s'il existe. Sinon, il interroge toutes les 50 ms et déclenche l'événement lui-même, si le hachage change. En utilisant the plugin, votre code ressemblera à ceci:

$(window).hashchange(function() { 
    var loc = window.location.hash; 
    if(loc != '') $(loc).click();  
}); 

Vous avez juste besoin de ce code dans un seul endroit. Vous pouvez le déclencher une fois en document.ready en tirant juste l'événement après qu'il soit lié comme ci-dessus en faisant ceci: