[AJAX] History (onBack)

Thomas D

Erfahrenes Mitglied
Hallo!

Ich habe eine Bildergalerie, in der ich einzelne Bilderordner anzeige. Per Klick auf einen dieser Ordner werden die jeweiligen Bilder per JavaScript geladen und anstelle des Ordner-Contents eingefügt.

Nun habe ich das Problem, dass beim Betätigen des Zurück-Buttons im Browser nicht wie vom User gewünscht wieder die Ordneransicht angezeigt wird, sondern die zuvor angezeigte HTTP-Seite. Um dies zu umgehen, beschreibe ich location.hash mit einem Wert, um den Browser zu veranlassen, einen neuen Historyeintrag anzulegen. Nun funktioniert zwar der Zurück-Button, allerdings weiß ich jetzt nicht, wie ich den Browser dazu veranlassen soll, dass er den Bilder-Content mit dem Ordner-Content austauscht. Beim Zurück-Klicken wird ja kein Reload erzeugt.

Wie schaffe ich es also, dass mein Script bemerkt, dass es durch einen Zurück-Button wieder aufgerufen wird? Denn sobald ich das habe, ist die Implementierung kein Problem mehr, da ich nur eine bestimmte Funktion aufrufen muss, die das für mich erledigt. Leider fehlt mir halt jetzt der Event, der mich darauf reagieren lassen könnte.

Ich hoffe, ich habe mich klar ausgedrückt und es gibt eine Lösung für mein Problem :).

MfG, Thomas D.
 
Das "Problem" ist, dass diese PHP-Datei keinen <body>-Tag hat - sie wird nämlich in eine andere PHP-Datei inkludiert, welche als Index fungiert; d.h. in diese Datei wird ein bestimmter Content inkludiert - in diesem Fall die AJAX-Galerie. Andere Tags können den onload-Event ja meines Wissens nicht annehmen - habe bereits <h1> und <div> probiert, doch es tat sich nichts.
 
"Tags"...oder besser gesagt Seitenelemente, das stimmt, da feuert onload nur im body(naja, auch in <frame> und <img>, aber das bringt dir da nichts)

Es gibt aber noch das window-Objekt, da feuert onload auch :)

Code:
<script type="text/javascript">
<!--
function funktionsname()
{
  alert('ich habe fertig');
}
window.onload=funktionsname;
//-->
</script>
 
Also ich habe jetzt folgendes probiert:

Code:
function ordnerOeffnen ()
{
	window.load = "ajaxHistory"; //auch ohne Hochkomma ausprobiert
	location.hash = "#history";
}

...

function ajaxHistory ()
{
	alert ("hallo");
}

Wenn ich nun von der zweiten Seite durch den Zurück-Button wieder auf die erste komme, tut sich rein gar nichts (auch kein JavaScript-Fehler, den ich in der Firefox-Fehlerkonsole sehen könnte) :( ...
 
Code:
function ordnerOeffnen ()
{
	window.load = "ajaxHistory"; //auch ohne Hochkomma ausprobiert
	location.hash = "#history";
}
Mal abgesehen davon, dass der Event "onload" heisst, und nicht "load", bringt es dir nichts, die Zuweisung in einer Funktion zu platzieren, wenn diese nicht aufgerufen wird.
Code:
function ajaxHistory()
{
  location.hash = "#history";
  alert('hallo');
}
window.onload=ajaxHistory;
 
Okay, bei onLoad habe ich mich verschrieben und das mittlerweile wieder ausgebessert. Allerdings tut sich noch immer nichts:

Code:
function ajaxHistory ()
{
	alert ("hallo");
}

window.onload = "ajaxHistory"; //auch onLoad habe ich probiert

BTW: Browser = Firefox 2.0.0.4
 
Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
function ajaxHistory()
{
  location.hash = "history";
  alert('hallo');
}
window.onload=ajaxHistory;
//-->
</script>
</head>
<body>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<a name="history">#history</a>
</body>
</html>
Haut bei mir einwandfrei hin...egal in welchem Brauser.
 
Habe jetzt die komplette Galerie neu programmiert und tat auch richtig damit :)! Vielen Dank jedoch für deine Hilfe. Wenn ich wieder etwas mehr Luft habe, werde ich mir deine Einwände anschauen und prüfen ;-) ...

MfG, Thomas D.
 

Neue Beiträge

Zurück