Ik maak gebruik van de history.js extension en alles gaat tot nu toe goed. Alleen als ik ga rondklikken werkt hij voor de eerste 2 keer wel, daarna gaat hij de 3de link echt 'verversen' (dus wat hij zonder history.js doet). Ik kan dat zien aan de console.log die gecleared wordt door de browser als je naar een nieuwe pagina toe gaat.
er staat oa:
- State.data.url i.p.v. State.url, wellicht maakt dat iets uit?
- You need to populate the History state each time somebody clicks on a (non-page refreshing) link for which you want to track the history. doe je dat? (wss wel met pushState, die eerste parameter, mag die leeg zijn, in link hierboven staat daarin een tuple, wellicht breekt je javascript (stilzwijgend) omdat je pushState niet goed aanroept, dan gaat mogelijk de pagina "door"?)
En misschien geeft het artikel je wel inspiratie om het anders aan te pakken, twee manieren om hetzelfde te bereiken worden besproken geloof ik.
Mogelijk triggert een click-event het statechange-event? Misschien "vuurt" je Adapter-bind-callback functie soms eerder dan je mouseclick-callback functie? In dat geval wordt je mouseclicks standaard gedrag (het "volgen" van de link) niet tegengehouden. Je zou eens kunnen kijken wat het eventtype is van de "evt" in je eerste callback functie (waarschijnlijk "click"?). Dit lijkt mij de meest voor de hand liggende oorzaak. En het is belangrijk te weten waarom het bovenstaande wel werkt!
console.log('event that triggered statechange: '+evt.type);// debug!
var State = History.getState();
$('#ajax-container').load(State.url);
});
...
En waarschijnlijk worden dus beide callbacks altijd getriggered, en meestal gaat het in de goede volgorde . Dat is altijd iets waarin je je snel vergist, dat bepaalde zaken parallel verlopen in jQuery.