Abfangen ob Vor- oder Zurück-Button gedrückt wurde
Robert
- javascript
Hallo,
ich habe eine HTML-Datei in welcher dynamisch per Javscript neuer Inhalt generiert wird. Das Problem dabei ist, dass keine History erzeugt wird, da sich die URL ja nicht ändert. Aus diesem Grund habe ich mir gedacht, dass ich das Drücken der Vor- oder Zurück-Buttons abfangen könnte, um dann darauf per Javascript zu reagieren. Wie kann ich das realisieren? Mit einem Event der die Buttons überwacht? (Gibt es sowas?)
Hallo
Das Problem dabei ist, dass keine History erzeugt wird, da sich die URL ja nicht ändert. Aus diesem Grund habe ich mir gedacht, dass ich das Drücken der Vor- oder Zurück-Buttons abfangen könnte, um dann darauf per Javascript zu reagieren. Wie kann ich das realisieren?
Deine Anwendung muss damit zurechtkommen. Rechne damit, dass es passiert. Lass Deine Anwendung angemessen reagieren.
Mit einem Event der die Buttons überwacht? (Gibt es sowas?)
Nein, nicht dass ich wüsste.
Den Drucken-Button, den Home-Button und die Adresszeile lassen wir gleich mitüberwachen, hmm? Klingt das sinnvoll?
Freundliche Grüße
Vinzenz
ich habe eine HTML-Datei in welcher dynamisch per Javscript neuer Inhalt generiert wird. Das Problem dabei ist, dass keine History erzeugt wird, da sich die URL ja nicht ändert. Aus diesem Grund habe ich mir gedacht, dass ich das Drücken der Vor- oder Zurück-Buttons abfangen könnte, um dann darauf per Javascript zu reagieren. Wie kann ich das realisieren? Mit einem Event der die Buttons überwacht? (Gibt es sowas?)
Es gibt Javascriptseitig nicht die direkte Möglichkeit.
Du könntest vorher eine andere Seite aufrufen und dann von der auf die eigentliche page weiterleiten. Du müsstest es dann nur so hinbekommen, dass beim Klick auf zurück wieder auf die eigentliche Page nach vorne gelinkt wird.
Wie das genau geht kann ich dir jetzt nicht sagen, da ich es noch nie ausprobiert habe, ich weiß aber, dass es einige Seiten bereits geschafft haben (nervig beim googlen).
Du solltest aber daran denken, dass es wahrscheinlich ziemlich lästig für die User sein kann, wenn sie ihren zurück-Button nicht wie gewohnt einsetzen können. Du solltest das in jedem Fall vorher ankündigen.
See Ya!
Hi,
ich habe eine HTML-Datei in welcher dynamisch per Javscript neuer Inhalt generiert wird. Das Problem dabei ist, dass keine History erzeugt wird, da sich die URL ja nicht ändert.
Populaere AJAX-Anwendungen greifen oftmals zur Manipulation von location.hash, um diesem Umstand halbwegs abzuhelfen.
Aus diesem Grund habe ich mir gedacht, dass ich das Drücken der Vor- oder Zurück-Buttons abfangen könnte, um dann darauf per Javascript zu reagieren. Wie kann ich das realisieren?
Gar nicht.
MfG ChrisB
Hallo,
ich habe eine HTML-Datei in welcher dynamisch per Javscript neuer Inhalt generiert wird. Das Problem dabei ist, ...
nicht dabei, sondern das _ist_ das Problem.
Warum besucht ein User deine Seite? In aller Regel weil er hofft, dort für ihn interessante Inhalte vorzufinden. Warum also diese von einer nicht zuverlässigen Voraussetzung abhängig machen, die selbst wenn gegeben noch andere Nachteile für den User mit sich bringt?
Für die Generierung dynamischer Inhalte sollte man imho auf eine serverseitige Technik wie bspw. PHP zurückgreifen.
Gruß Gunther
Hallo,
Warum besucht ein User deine Seite? In aller Regel weil er hofft, dort für ihn interessante Inhalte vorzufinden.
Die Javascript-Seite ist im Moment eine reine Spielerei. Die Original-Seite verwendet lediglich HTML 3.2.
Für die Generierung dynamischer Inhalte sollte man imho auf eine serverseitige Technik wie bspw. PHP zurückgreifen.
Ich weiß, es ist totaler Blödsinn so etwas mit Javascript zu machen. Aber ich will einfach mal schauen inwieweit ich das ausreizen kann.
Gar nicht.
Wie mir aufgefallen ist vielleicht doch. Über history.length kann ich den momentanen Wert beim Laden meiner Seite abrufen. Der Wert speichern und bei jedem neuschreiben vergleichen. Ist die Differenz -1 dann wurde zurückgeblättert, ist die Differenz 1 wurde vorwärts geblättert.
Allerdings gibt es da noch das Problem, dass der Vorwärts-Button noch nicht aktiv ist. Eventuell muss ich da vorher noch eine Seite zischenladen.
Du solltest aber daran denken, dass es wahrscheinlich ziemlich lästig für die User sein kann, wenn sie ihren zurück-Button nicht wie gewohnt einsetzen können.
Wenn ich das so umsetzen kann wie ich mir das vorstelle, dann wird der Benutzer die Buttons wie gewohnt verwenden können. Aber soweit bin ich ja noch nicht.
Vielen Dank für eure Antworten.
Hi,
Die Original-Seite verwendet lediglich HTML 3.2.
Sie soll also lediglich in einem Museum ausgestellt werden?
MfG ChrisB
Hallo,
Die Original-Seite verwendet lediglich HTML 3.2.
Sie soll also lediglich in einem Museum ausgestellt werden?
??? Ich habe schon CSS-Seiten in HTML 3.2 nachgebaut, die optisch dann genauso aussahen. Die einzige Abweichung waren die Links (immer unterstrichen). Insofern verstehe ich das mit dem Museum nicht. Man kann auch heute noch ansprechende Seiten nur mit HTML 3.2 gestalten.
Hi,
??? Ich habe schon CSS-Seiten in HTML 3.2 nachgebaut, die optisch dann genauso aussahen.
Und wenn du schon aus Hackfleich Roboterchen geformt haettest, die sich mit Teebeutel-Faeden versteuern liessen ...
Insofern verstehe ich das mit dem Museum nicht. Man kann auch heute noch ansprechende Seiten nur mit HTML 3.2 gestalten.
... macht's das Ganze auch nicht sinnvoller.
Nenne mir einen plausiblen Grund, heute noch Dokumente aufbauend auf einem derart (ver)alt(et)en Standard zu gestalten.
MfG ChrisB
Hallo,
Nenne mir einen plausiblen Grund, heute noch Dokumente aufbauend auf einem derart (ver)alt(et)en Standard zu gestalten.
Frag' mal cybaer ;-)
*SCNR*
Don P
Hallo,
Nenne mir einen plausiblen Grund, heute noch Dokumente aufbauend auf einem derart (ver)alt(et)en Standard zu gestalten.
Wieso veralteter Standard? Eine HTML-Datei besteht doch auch heute noch aus dem gleichen Grundgerüst wie damals. Tabellen, Bilder, Links, Listen... da hat sich doch nichts geändert, lediglich das ein paar Befehle dazu gekommen sind. Der einzig nennenswerte Unterschied zu damals ist doch, dass heute CSS zur Formatierung eingesetzt wird.
Der einzig nennenswerte Unterschied zu damals ist doch, dass heute CSS zur Formatierung eingesetzt wird.
nicht immer, man kann heute auch noch super inline formatieren :D
aber genau die Formatierung per CSS ist doch der extreme Vorteil
Falls es noch jemand interessiert:
Wie mir aufgefallen ist vielleicht doch. Über history.length kann ich den momentanen Wert beim Laden meiner Seite abrufen. Der Wert speichern und bei jedem neuschreiben vergleichen. Ist die Differenz -1 dann wurde zurückgeblättert, ist die Differenz 1 wurde vorwärts geblättert.
Das funktioniert nicht so wie ich es mir eigentlich erhofft hatte. Ich kann zwar das Vor- und Zurückblättern abfangen, allerdings wird dann die Seite aus der History überschrieben, was ja eigentlich nicht sein sollte.
Ich hab es jetzt schlichtweg so gelöst, dass der dynamisch erzeugte Seiteninhalt über "datei.htm?schlagwort" aufgerufen wird. Dadurch wird die aufgerufene Seite wie gewohnt in der History abgelegt.
Hallo,
Das Problem dabei ist, dass keine History erzeugt wird
Deshalb ist die einzige Lösung, selbst eine History anzulegen. Und zwar eine im Browser (location.hash ändern und Änderungen daran überwachen) und eine in deiner Anwendung, sodass du von einen älteren bzw. neueren Zustand wiederherstellen kannst.
Wie das im Detail aussieht, hängt davon ab, wie deine Anwendung funktioniert. Ich glaube aber, du unterschätzt das völlig. Wenn das nur eine Spielerei ist, lohnt sich der Aufwand wahrscheinlich nicht. (Allerdings wäre es dann vermutlich noch einfach, den Status irgendwie festzuhalten und wiederherzustellen.)
Mathias
Hallo,
Deshalb ist die einzige Lösung, selbst eine History anzulegen. Und zwar eine im Browser (location.hash ändern und Änderungen daran überwachen) und eine in deiner Anwendung, sodass du von einen älteren bzw. neueren Zustand wiederherstellen kannst.
Ich hab's jetzt so gelöst, dass der dynamisch erzeugte Seiteninhalt über location="datei.htm?schlagwort" aufgerufen wird. Dadurch wird die aufgerufene Seite wie gewohnt in der History abgelegt.