feststellen ob das fenster geschlossen werden soll
-
hallo,
hab ein kleines problem. ich möchte feststellen ob das aktuelle browserfenster geschlossen wird. mit onunload merke ich aber nur, wenn die seite verlassen wird. wenn ich also wo anders hinsurfe tritt das auch ein. gibt es eine möglichkeit, festzustellen ob ein andere seite geladen werden soll nach dem ereigniss und evtl. auch welche?ich möchte feststellen, wenn ein user mein forum verlässt, um ihn dann auszuloggen.
das soll aber eben nicht passieren, wenn er nur von einer forunseite zur nächsten wechselt.
-
Tip: Nimm doch Sessions, die benötigst du sowieso um zu wissen, dass der User eingeloggt war. Das tolle an Sessions ist, das sie automatisch an Gültigkeit verlieren wenn die Seite geschlossen wird. Beim nächsten Aufruf gibts ne neue Session
Trotzdem: Hier findest du alle Events die du per JS abfangen kannst: http://www.selfhtml.net/javascript/sprache/eventhandler.htm
BTW: Wie findest du als Server raus ob der User etwas geschlossen hat? Sag bloß du baust so ein nerviges Forum, wo ich mein Fenster schließe und ein neues poppt auf das deinem Script sagt er soll mich ausloggen. Beachte: Direkt funktionierts nicht da JS clientseitig läuft.
Solltest du eine solche Seite anbieten drehe ich JS ab, dann bin ich auch nicht ausgeloggt. Wie du siehst hat deine clientseitige Variante einige große Probleme.
MfG SideWinder
-
Das Problem mit sessions ist aber, dass sie einen timeout haben, also nicht sofort ihre gültigkeit verlieren, oder? naja, hat sich eh erledigt.
weiß jemand warum mit keinem browser self.close() funktioniert?
-
Timeout stimmt, ja, aber wenn du mir kein Cookie andrehst sondern nur eine SID vergisst die mein Browser wenn er beendet wird. Heißt: Sobald ich meinen Browser wieder öffne will er eine neue Session von dir. Damit da jetzt nicht unendlich viele Sessions aufgebaut werden weil jeder immer neue haben will gibts einen Timeout nachdem die Session ganz einfach beendet wird.
weiß jemand warum mit keinem browser self.close() funktioniert?
Zwar nicht nachgelesen, aber ich könnte mir gut vorstellen, dass das die meisten Browser deaktiviert haben. Wie gesagt, läuft JS clientseitig. Viele Leute haben clientseitig sämtliche Kontrollmöglichkeiten durch die Homepage deaktiviert.
MfG SideWinder
-
das JS client seite ist is mir klar. das is das fenster aber auch
das komische ist, ich kann ein neues fenster erzeugen und dann mit close vom anderen aus problemlos schließen, nur das eigene geht nicht.
das ist sowohl mit IE6 SP2, firefox und netscape so, obwohl ich alles erlaubt hab bei js
-
das hauptfenster kann man nicht schließen, würd den user auch nerven.
zu deinem problem, du könntest ein frameset machen und ein versteckter frame hat ein onunload event.
-
Statt self schonmal einfach window.close() versucht?
MfG SideWinder
-
ja hab ich probiert, und auch nur close() geht nicht.
kann ich sessions sagen keine cookies zu verwenden? also serverseitig in meinem php script? oder muss das der admin in seiner php.config machen?
-
Ein richtiges Cookie musst du mir explizit andrehen, diese temporären Dinger wo die die SIDs speichern werden afaik nach Beenden des Browsers gelöscht. Aber irgendwo muss er die SID auch speichern.
Eine andere Möglichkeit ist es, die SID als GET-Parameter an die URL anzuhängen, aber auch von diesen Seiten halte ich nichts. Jedesmal bevor ich dann einen Link weitergebe muss ich die dämliche SID rauseditieren, etc. etc. zum Heulen.
MfG SideWinder
-
also sind die session cookies wirklich nur für die lebenszeit des browsers gespeichert und dann krieg ich ne neue?
bin gard dabei ein forum (burningboard) etwas umzubauen, weils nicht will wie ich will. und irgendwie hab ich das gefühl die session lebt länger