Ingo: Javascript Event überwachen

Hallo liebe SELFHTML-Gemeinde,

ich habe ein Problem mit Javascript und hoffe hier einen kleines Hinweis auf meine Problemstellung zu bekommen.

Ausgang:

  • Ausgangsseite ist komplett geladen. Sie bietet eine Konfigurationsmöglichkeiten für den Export einer Datenbank-Abfrage in eine .csv Datei. Je nach dem wie groß die Auswahl getroffen wird, kann der Export bis zu 30sec in Anspruch nehmen. Anschließend bekommt der Nutzer das Standard Popup um die .csv Datei auf seinem Rechner zu speichern oder zu öffnen. Das Absenden der Abfrage erfolgt über "document.FORMx.submit()". Die Ausgangsseite wird nicht geändert und bleibt wie zu beginn stehen. Das funktioniert auch alles ganz prächtig.

Problem:
Nun blende ich momentan ein <div> über die gesamte Seite, mit der Nachricht, dass der Exportvorgang in Arbeit ist. Das Problem ist, wie kann ich per Javascript in Erfahrung bringen, dass der Export abgeschlossen bzw das Popup zur Speicherung der Datei da ist und somit das <div> wieder ausblenden kann. Hab verschiedene Events ausprobiert, aber nichts hat zum gewünschten Ergebnis geführt.

Vielen Dank im Voraus für die Hilfe!

Gruß Ingo

  1. Hi Ingo!

    Mein Ansatz hierzu wäre:

    • erzeugen einen unsichtbaren <iframe name="doneMsg" style="visibility:hidden;"> in der Seite.

    • Mit dem Submit des Originalformulars wird zusätzlich ein Zweitformular abgesendet:
      <form method="{post|get}" target="doneMsg" action="warten.cgi">

    • warten.cgi überprüft serverseitig, ob die Auswertung noch läuft (wie du dies regelst, bleibt dir überlassen: ps, semaphore, flag file u.ä.); solange wird keine Antwort gesendet. Ist die Auswertung fertig, so wird HTML zurückgesendet. Dieses beinhaltet ein Javascript, welches den Warte<div> im parent wieder versteckt.

    Wahrscheinlich geht es auch einfacher, aber funktionieren sollte es so.

    Grüsse,
    Richard

    1. Hallo Richard,

      gibt es denn nicht einfache Möglichkeit mit einem Javascript Event zu überprüfen ob der Dialog "Datei speichern" da ist bzw die Seite noch läd?
      Eine serverseitige Überprüfung halte ich für fehl am Platze (wenn es eine andere Möglichkeit gibt;-). Trotzdem Danke für Deinen Ansatz.

      Gruß Ingo

      Hi Ingo!

      Mein Ansatz hierzu wäre:

      • erzeugen einen unsichtbaren <iframe name="doneMsg" style="visibility:hidden;"> in der Seite.

      • Mit dem Submit des Originalformulars wird zusätzlich ein Zweitformular abgesendet:
        <form method="{post|get}" target="doneMsg" action="warten.cgi">

      • warten.cgi überprüft serverseitig, ob die Auswertung noch läuft (wie du dies regelst, bleibt dir überlassen: ps, semaphore, flag file u.ä.); solange wird keine Antwort gesendet. Ist die Auswertung fertig, so wird HTML zurückgesendet. Dieses beinhaltet ein Javascript, welches den Warte<div> im parent wieder versteckt.

      Wahrscheinlich geht es auch einfacher, aber funktionieren sollte es so.

      Grüsse,
      Richard

      1. Hi,

        gibt es denn nicht einfache Möglichkeit mit einem Javascript Event zu überprüfen ob der Dialog "Datei speichern" da ist

        Nein, solche GUI-Ereignisse liegen ausserhalb des Zugriffsbereiches von JavaScript.

        bzw die Seite noch läd?

        Die Seite, in der du dein Div platziert hast, *ist* fertig geladen.
        Es geht um die Anforderung einer voellig neuen Ressource durch das Formular-Abschicken. Und da diese nur zum Download sein soll, ist darin nix mit JavaScript.

        Eine serverseitige Überprüfung halte ich für fehl am Platze

        Ich fuer die einzig moegliche (in Kombination mit einem JS, was darauf irgendwie reagiert).

        Anderer, trivialerer Vorschlag: Kleines [X] oben rechts in der Ecke des Divs anbringen, ueber das der Nutzer es selbst wieder schliessen kann ...

        MfG ChrisB