Talk:PANGAEA search

hg: beim nachdenken zeigt das warehouse ein leeres fenster mit einem ???- titel. kann es ev darin sagen, was es macht oder sonst das fenster weglassen? es ruft sonst irritationen hervor - oder ?

uwe: Kann man nicht beheben. Das hat mehrere Gründe, es hängt auch vom Browser ab.

Man kann via Java Script keinen "Download" starten, man kann einem Browser nur sagen, dass er zu einer URL gehen soll. Was er dann macht, entscheidet er nachher am Content-Type und der Content-Disposition, die der Webserver liefert. Und das ist der Wunde Punkt.

Was man nur tun kann (wie gerade gesagt), ist den Browser im *aktuellen* Fenster auf eine neue URL umlenken - wie wenn man einen Link anklickt. Das wäre initial erstmal gut, der Browser versucht das als neue HTML-Seite anzuzeigen, zeigt aber dann, da es ein Download ist, die "Save as"-Box. Der Browser-Inhalt bliebe bestehen - alles gut. Probleme treten an anderer Stelle auf: Passiert ein Fehler bei der Umleitung ("500 internal server error", "404 not found" -- kann passieren, wenn der Browser zu langsam ist) würde das nun dazu führen, dass die ganze Data Warehouse-GUI dann durch die Fehlermeldung vom Webserver ersetzt wird - das User-Interface würde verschwinden mit samt aller Einstellungen, die der User gemacht hat und was schlimmer ist, der Back-Button ist bei AJAX-Anwendungen nutzlos. Das würde den User komplett an-nerven, weil er alles verliert.

Um das zu vermeiden, wird in solchen Fällen ein zweiter Weg gewählt: Anstatt den Browser im aktuellen Fenster auf den Download umzulenken, macht man ein neues Browser-Fenster auf mit der URL des Downloads. Sobald der Browser dann feststellt, dass es eine Content-Type/Content-Disposition ist, die gespeichert werden muss, schließt er das Fenster wieder und zeigt die "Save as". Das Problem hierbei ist: der Browser kann erst dann feststellen, dass es ein Download ist, wenn eine Response kommt, bis das nicht passiert nimmt er an, er soll eine neue HTML-Datei laden -- man kann nicht einmal einen besonderen Inhalt im Fenster anzeigen - der Browser ist ja in Wartestellung. Der Vorteil dieses 2. Weges: Passiert jetzt ein HTTP-Fehler, ersetzt der nicht das Hauptfenster, sondern nur das kleine neue. Das zeigt dann den HTTP-Fehler an.

Die Gründe sind dieselben, warum man die rotierende CD auch nicht entfernen kann im HS (erster Fall ohne neues Fenster wird hier benutzt, weil umgekehrt - zuerst ist Fehler da [datei nicht verfügbar], behebung nachher): Das rotierende CD-Fenster wird ersetzt durch einen Reload auf immer dieselbe URL (Logik: Reloade Seite alle 5 sek. solange bis es geht). Wenn eben die URL jetzt keinen HTTP-Fehler "503 Derzeit nicht verfügbar" mehr hat, startet der Browser das "Save-As". Der Inhalt des aktuellen Fensters bleibt dabei aber unverändert, man hat auch keine Möglichkeit mehr das zu ändern (der Browser hat ja schon zur neuen URL "gewechselt").