Wie finde ich heraus, ob der User den Zurückbutton benutzt hat
Christian
- javascript
Hallo, ich suche folgende Möglichkeit:
Ich habe ein Javascript, das nur beim ersten Besuch eines Users ausgeführt werden soll. Wenn der User nun weitersurft und dann auf Zurück klickt soll das Script nicht ausgeführt werden. (Wenn man auf Aktualisieren klickt oder die Seite in einem neuen Fenster öffnet ist es egal, da das Script nun erst gar nicht mehr geladen wird (php-seite).) Gibt es da eine entsprechende If-Anweisung um heruaszufinden ob der User den Zurück-Button benutzt hat um die Seite anzuzeigen?
Danke für Antworten und euer Bemühen
Hi Christian,
Gibt es da eine entsprechende If-Anweisung um heruaszufinden ob der User den Zurück-Button benutzt hat um die Seite anzuzeigen?
Es gibt das history-Objekt, in dem die zuletzt besuchten Seiten gespeichert sind. Leider kannst Du auf die Inhalte nicht zugreifen, und so auslesen, ob der Besucher schon auf der Index-Seite war oder nicht. Du kannst lediglich feststellen, ob der User schon vorher (andere) Seiten besucht hat oder nicht.
Du hast also keine Möglichkeit über das history-Objekt sicher feststellen ob der Besucher schon auf der index-Seite war oder nicht.
Meine Idee wäre es beim ersten Besuch der Index-Seite einen Cookie zu setzen. Jedes weitere mal, wenn der Besucher auf die Index-Seite kommt, wird überprüft, ob der Cookie schon vorhanden ist oder nicht.
Leider wird es schwierig zu bestimmen, wie lange der Cookie gespeichert beleiben soll bzw. wann _Du_ willst, dass der User erneut das Index-Seiten-Skript zu sehen bekommt.
Was ist für Dich der erste Besuch der Indexseite? Sprichst Du von einmal (im sinne von immer), einmal pro Besucher-Session oder einmal pro Tag/Monat/Stunde? Das solltest Du berücksichtigen, wenn Du die Dauer des Cookies setzt. Diese ganzen Überlegungen sind auch nur für den Fall gültig, dass der Besucher Cookies nicht deaktiviert hat.
Möchtest Du, dass nur einmal pro Session dieses Skript ausgeführt wird, kannst Du dir mit einem kleinen Trick behelfen: Du benennst das aktive Browserfenster einfach um, z.B. in "schon_besucht", woran Du eben dies erkennen kannst. Wechselt der Besucher allerdings das Browserfenster, hilft Dir das auch wenig. Ebenso wird dann bei jedem neuen Aufruf der Seite, nachdem der Besucher den Browser geschlossen hat, das Skript ausgeführt. Dumusst Dir also _sehr_ genau überlegen, was du als "ersten Besuch" auffasst.
Ich hoffe, meine Antwort regt Dich ein wenig zum üb erlegen an, damit Du die für SDich passenste Lösung findest.
Viele Grüße...
Alex :)
Hallo Christian,
in Ergänzung zu Alexanders Ausführungen schlage ich folgende Variante vor:
if (window.name != "kannkeinzufallsein") {
deineFunktion();
window.name = "kannkeinzufallsein";
}
Das überpüft, ob das Fenster einen bestimmten Namen hat (Obacht: nicht so was übliches wie main oder navi oder so nehmen). Wenn nein, wird Deine Funktion aufgerufen und anschließend window.name auf eben diesen Wert gesetzt. Kommt der User auf diese Seite zurück, stellt dieses Skript fest, dass window.name schon den bestimmten Wert hat, und führt die Funktion nicht aus. Kommt der User irgendwann später wieder (nachdem das Browserfenster geschlossen worden war), wird die Funktion wieder ausgeführt und window.name entsprechend gesetzt.
Grüße,
Utz
if (window.name != "kannkeinzufallsein") {
deineFunktion();
window.name = "kannkeinzufallsein";
}
Danke...dieses Script ist perfekt für mich. Genauso hab ich mir das gewünscht.
Thx an alle, die mir geholfen haben
if (window.name != "kannkeinzufallsein") {
deineFunktion();
window.name = "kannkeinzufallsein";
}Danke...dieses Script ist perfekt für mich. Genauso hab ich mir das gewünscht.
Aber immer dran denken, dasss JS immer öfters abgeschaltet sein dürfte, genauso wie cookies.
D.h. falls deine Anwendung daran angewiesen ist, wirst du mit den Lösungen icht viel Freude haben.
i.d.R. läßt sich aus deiner Frage schon schliessen, das du einen Fehler in der Programmlogik hast und solltest von daher eher dort die Lösung suchen.
Struppi