Beim Schließen des Browsers
Sven
- javascript
0 Sven Rautenberg0 Sven
0 Struppi
Hallo zusammen,
ich brauche die Funktionalität, dass beim Schließen des Browsers ein neues Fenster geöffnet wird, welches dann einen symbolischen Link (mittels PHP) löscht. Das mit dem löschen des Links ist ja kein Problem und zum Glück gibts ja den JavaScript-Eventhandler onUnload.
Leider funktioniert das dann nicht mehr unter Netscape, was es aber sollte !
Ich setze den onUnload direkt im Bodytag ein :
<body onUnload=window.open('Ziel.php','Seitenname','width=50,height=50,left=600,top=600')>
Das komische ist, wenn ich oben anstatt onUnload ein alert("Text") einsetze, dann macht er brav ein Fenster auf im Netscape beim schließen des Fensters.
Hat jemand ne Idee ?
Im voraus Danke für jeden Tip !
Gruß
Sven
Moin!
ich brauche die Funktionalität, dass beim Schließen des Browsers ein neues Fenster geöffnet wird, welches dann einen symbolischen Link (mittels PHP) löscht. Das mit dem löschen des Links ist ja kein Problem und zum Glück gibts ja den JavaScript-Eventhandler onUnload.
Dein Ansatz ist sehr wahrscheinlich grob fehlerhaft.
Was passiert, wenn dieser Link nicht gelöscht wird? Ist das schlimm? Oder müßtest du dann regelmäßig aufräumen?
Wenn du trotzdem regelmäßig aurfäumen mußt, dann vergiß das onunload gleich, sondern programmiere eine saubere Aufräum-Routine, die das Aufräumen automatisiert erledigt. Denn du kannst niemals _garantieren_, dass onunload aufgerufen wird.
Mögliche Hinderungsgründe (und das sind zuviele, damit es glatt funktioniert):
1. Javascript ausgeschaltet
2. Popup-Blocker aktiv
3. unonload-Filter aktiv (ja, das kann Webwasher zum Beispiel)
4. Browser stürzt ab
5. Rechner stürzt ab...
Es gibt also genügend Gründe, warum deine Methode nicht funktioniert.
Und wenn der nicht gelöschte Link sogar schlimm ist, dann solltest du dir gänzlich etwas neues ausdenken, wobei ich allerdings bezweifle, dass dir etwas gelingen wird, was beim Verlassen der Seite irgendwas löscht - du solltest lieber dahingehend programmieren, dass der ungelöschte Link nicht mehr schlimm ist.
- Sven Rautenberg
Hallo Sven,
also ich verwende diese Geschichte nur intern (Intranet). Ich kann also sicherstellen, dass Javascript läuft und Webwasher haben wir auch nicht im Einsatz.
Im Prinzip handelt es sich um ein Downloadcenter. Wenn man sich eine Datei runterlädt, wird im Downloadbereich ein Link auf diese Datei erzeugt, die außerhalb des Webserver-roots liegt.
Dieser Link soll dann wieder herausfliegen, wenn das Browserfenster geschlossen wird. Im Prinzip vermeide ich dadurch, dass Leute Dateien herunterladen, von denen sie den Pfad kennen, ohne die Applikation zu verwenden (Berechtigung,Logbuch, etc.).
Da ich nicht weiß wann der Download einer Datei beendet ist verwende ich onUnload.
Prinzipiell hab ich auch schon versucht, einfach auf Betriebssystemebene regelmäßig einen Job ablaufen zu lassen, der alle Links löscht, welche älter als ein bestimmter Zeitraum sind. Das Problem dabei ist aber, dass ich nicht weiß wie lange ein Download dauert , da teilweise große Dateien und dünne Datenleitungen vorhanden sind (Extremfall : 300 MB und 128 kBit/s).
Für Fälle, dass der onUnload nicht funktionieren würde, würde ich sowieso täglich alle Links älter einen Tag rauswerfen.
Vielleicht verstehst Du jetzt, warum ich so vorgehe.
Ich hab nämlich nicht vor das ganze in Java zu implementieren und dafür ein halber Jahr zu verbraten.
Gruß
Sven
PS: Oder gibt es eine Möglichkeit, beim Downloadende einen Eventhandler auszulösen ?
Moin!
also ich verwende diese Geschichte nur intern (Intranet). Ich kann also sicherstellen, dass Javascript läuft und Webwasher haben wir auch nicht im Einsatz.
Bleibt also die nicht unwahrscheinliche Möglichkeit des Absturzes, der Leitungsunterbrechung etc...
Im Prinzip handelt es sich um ein Downloadcenter. Wenn man sich eine Datei runterlädt, wird im Downloadbereich ein Link auf diese Datei erzeugt, die außerhalb des Webserver-roots liegt.
Warum so kompliziert? Bastel dir eine URL auf ein Auslieferungsskript zusammen, welches die Datei von ihrem sicheren Ort ausliest und an den Browser liefert, wenn der Benutzer authentifiziert ist. Funktioniert sicher, prima und vor allem ohne Nachwehen.
- Sven Rautenberg
Hallo zusammen,
ich brauche die Funktionalität, dass beim Schließen des Browsers ein neues Fenster geöffnet wird, welches dann einen symbolischen Link (mittels PHP) löscht. Das mit dem löschen des Links ist ja kein Problem und zum Glück gibts ja den JavaScript-Eventhandler onUnload.
Leider funktioniert das dann nicht mehr unter Netscape, was es aber sollte !Ich setze den onUnload direkt im Bodytag ein :
<body onUnload=window.open('Ziel.php','Seitenname','width=50,height=50,left=600,top=600')>
Das ist fehlerhaftes HTML da die anweisungen im Handler mit Anführungszeichne umschlossen werden müssen.
Das komische ist, wenn ich oben anstatt onUnload ein alert("Text") einsetze, dann macht er brav ein Fenster auf im Netscape beim schließen des Fensters.
Das Problem ist, das onunload ein unzuverlässiger Handler ist. Du kannst dich eigentlich nie darauf verlassen dass alles ausgeführt wird (ein window.open z.b dauert viel zu lange um noch ausgeführt zu werden, wenn ich mein Browserfenster schliessen möchte, was ich auch für richtig halte), sondern ihn lediglich für kleinere Anehmlichkeiten nutzen, die aber auf jeden Fall nicht substanziell für die Anwendung sein dürfen.
Struppi.