Ich verwende jQuery, um Inhalt in einem div-Container dynamisch zu laden.history.pushstate schlägt Browser zurück und vorwärts
Der serverseitige Code erkennt, ob die Anforderung AJAX oder GET lautet.
Ich möchte die Browser zurück/vorwärts Tasten mit dem Code arbeiten, so dass ich versuche, history.pushState verwenden. Ich habe zu folgenden Code bekam:
$('.ajax').on('click', function(e) {
e.preventDefault();
$this = $(this);
$('#ajaxContent').fadeOut(function() {
$('.pageLoad').show();
$('#ajaxContent').html('');
$('#ajaxContent').load($this.attr('href'), function() {
window.history.pushState(null,"", $this.attr('href'));
$('.pageLoad').hide();
$('#ajaxContent').fadeIn();
});
});
});
Alles funktioniert gut, außer wenn sie mit den Browsern Vor/Zurück-Taste, die Adresse in der Leiste ändert nach Plan, aber die Seite gerade nicht ändert. Was mache ich falsch?
aktualisiert Skript mit Hilfe von Clayton Antwort
var fnLoadPage = function(url) {
$('#ajaxContent').fadeOut(function() {
$('.pageLoad').show();
$('#ajaxContent').html('').load(url, function() {
$('.pageLoad').hide();
$('#ajaxContent').fadeIn();
});
});
};
window.onpopstate = function(e) {
fnLoadPage.call(undefined, document.location.href);
};
$(document).on('click', '.ajax', function(e) {
$this = $(this);
e.preventDefault();
window.history.pushState({state: new Date().getTime()}, '', $this.attr('href'));
fnLoadPage.call(undefined, $this.attr('href'));
});
Thnx viel Clayton! Ihr Beispiel ist sehr illustrativ, alles macht jetzt Sinn. Ich werde meine Frage aktualisieren, um zu zeigen, wie mein endgültiger Code aussieht. – Barry127