Ajax Histroy back

Anna Bolika

Erfahrenes Mitglied
Ich versuche mich gerade mit dem Umstellen einer Webseite auf Ajax. Eigentlich klappt alles fast viel zu gut, bis auf eine Sache:

Klicke ich auf den Back-Button des Browsers, steht oben in der Adresszeile zwar die "korrekte, vorhergehende" Seite, aber sie wird nicht aufgerufen. Das scheint so gewollt zu sein.

Die Lösung für mein Problem heißt wohl irgendwie "onpopstate". Damit klappt es tatsächlich auch, allerdings wird dieses event bei jedem Nicht-Ajax-Aufruf automatisch aufgerufen (Chrome).

Ich habe nun unheimlich viel zu onpopstate gelesen und mir viele Beispiele angesehen. Habe den Eindruck, irgendwas nicht verstanden zu haben. Alle fragen auf irgendeinen event.state ab. Der ist bei mir immer "null".

Das hier ist mein Code. Ich dreh ein wenig am Rad. Kann mir jemand einen Tipp geben? Wie beschrieben: Ich möchte einfach nur, dass der Zurück-Button auch beim Aufruf über Ajax funktioniert. Es handelt sich bei meinem Beispiel um den Aufruf der kompletten Webseite ohne Header und Footer, also nicht um Einzelteile (vorerst :)

Code:
window.onpopstate = function(event) 
{
	alert(document.location);
	ajax2(document.location.toString(), function() { document.getElementById('main').innerHTML = rAjax.responseText} );
};


function ajax2(sUrl, rFunction)
{
	var sUrl;
	var sElement;
	var rFunction;
	
	if (window.XMLHttpRequest)     
	{ 
		rAjax = new XMLHttpRequest(); 
	} 
	else if (window.ActiveXObject)   // MS
	{
		rAjax = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	rAjax.onreadystatechange  = rFunction;

	rAjax.open('GET', sUrl, true);                  
	rAjax.send(null);

} //pajax2
 
Ach ja, bevor jemand was dazu schreibt: Gleich am Anfang meines Codes stand früher auch mal mehr :) Ich fand es irgendwie witzlos, auf event.state abzufragen, wenn dort sowieso immer nur null drinsteht.
 

Neue Beiträge

Zurück