MankoFranko: Formular erstellen und absenden

Hallo!

Ich habe im Moment folgendes Problem:
Ich möchte ein Server-seitiges Skript aus einer HTML-Seite heraus aufrufen.
So weit so simpel. Das Problem ist, dass der Aufruf automatisch beim onunload-Event ausgelöst werden soll (also wenn das Browser-Fenster geschlossen wird).

Zu diesem Zeitpunkt wird zwar das dort angegebene Javascript noch ausgelöst, der HTML-Teil der Seite steht aber schon nicht mehr zur Verfügung, so dass man beispielsweise auf dort integrierte Formulare nicht mehr zurückgreifen kann.

Den Weg über XmlHttpRequest habe ich auch schon probiert, dazu müssten aber für Gecko-Browser sämtliche derart gestalteten Dateien signiert werden. Da das Projekt häufig Updates erfahren wird, die nicht jedesmal aufwändig signiert werden können, fällt dies aber aus.

Daher war meine Idee jetzt, mittels Javascript in einer Art virtuellem Dokument ein entsprechendes Formular aufzubauen und es im Anschluss an das Skript abzuschicken.

Mein aktueller Fortschritt (JS-Auszug) sieht wie folgt aus:

x = document.implementation.createDocument("", "test", null);
    x.documentElement.appendChild(document.createElement("form"));
    x.documentElement.firstChild.setAttribute("action","cgi-bin/testScript.pl");
    x.documentElement.firstChild.appendChild(document.createElement("input"));
    x.documentElement.firstChild.firstChild.setAttribute("type","hidden");
    x.documentElement.firstChild.firstChild.setAttribute("name","filename");
    x.documentElement.firstChild.firstChild.setAttribute("value",thisFile);

Soweit so gut. Leider weiß ich ab hier nicht mehr weiter. Mit "x.documentElement.firstChild.submit()" funktioniert es nicht.
Nun überlege ich, ob es auf diesem Weg vielleicht sowieso nicht funktioniert. Immerhin erstelle ich hier eine XML- und keine HTML-Datei.

Hat jemand 'ne Idee, wie ich hier weitermachen muss oder wie ich es besser machen kann?

Danke!

Mfg, MF

  1. Hallo,

    nein, ich habe keine Lösung, muss aber loswerden dass der Versuch, Formulardaten onunload zu verschicken, mega-bäh ist - Du versuchst an Daten ranzukommen, die der User Dir nicht geben will, einen anderen Grund kann ich dafür nicht erkennen.

    Falls es einen anderen Grund für Dein Ansinnen gibt: sag doch mal, warum Du das so haben willst, dann finden wir vielleicht einen Weg, der weniger bäh ist.

    Grüße,
    Utz

    --
    Mitglied im Ring Deutscher Mäkler
    1. Hallo,

      nein, ich habe keine Lösung, muss aber loswerden dass der Versuch, Formulardaten onunload zu verschicken, mega-bäh ist - Du versuchst an Daten ranzukommen, die der User Dir nicht geben will, einen anderen Grund kann ich dafür nicht erkennen.

      Wow, 'ne Ethik-Diskussion...

      Ich möchte Dich freundlichst bitten, bevor Du solche Anschuldigen postest, die Frage nochmal genau durchzulesen.
      Hättest Du das kleine Skriptbeispiel gelesen, dann wüsstest Du, dass das einzige, was ich mit diesem Formular übermitteln möchte, der Name der aktuellen Datei ist.
      Und das sind meines Erachtens keine User-Daten! Immerhin hab ich den irgendwann mal selbst festgelegt.

      Falls es einen anderen Grund für Dein Ansinnen gibt: sag doch mal, warum Du das so haben willst, dann finden wir vielleicht einen Weg, der weniger bäh ist.

      Extra für Dich hier noch die Erklärung worum es geht: Es handelt sich hier nicht um eine öffentlich zugängliche Internet-Seite, sondern um eine Netzwerk-Web-Applikation.
      Der Grund für die Übermittlung bei onunload hängt mit der Freigabe von Dateien zusammen. Ich will lediglich in einer Log-Datei festhalten, welche Seiten im Moment geöffnet sind und welche nicht (dazu brauche ich den o.g. Dateinamen - mehr nicht).
      Da diese Seiten auch Möglichkeiten zur Server-Interaktion geben, muss ich für alle anderen diese Funktionalitäten sperren, damit es nicht zu Überschneidungen kommt.

      Hoffe, Deinen Gerechtigkeitssinn ein wenig beruhigt zu haben.

      Mfg, MF

      1. Hallo,

        *plonk*

        Grüße,
        Utz

        --
        Mitglied im Ring Deutscher Mäkler
        1. Hi,

          *plonk*

          wieso? Die Antwort war doch nun wirklich freundlich gehalten und gab genau die gefragten Zusatzinfos. An dem "Extra für Dich" hätte ich mich nun nicht weiter gestört.

          Aber zum Problem: Wenn im Netzwerk automatische Popups zugelassen sind, könntest Du nicht versuchen, hierüber - mit angehängter Variablen - das Script aufzurufen?

          freundliche Grüße
          Ingo

          1. Hallo Ingo,

            *plonk*
            wieso? Die Antwort war doch nun wirklich freundlich gehalten und gab genau die gefragten Zusatzinfos. An dem "Extra für Dich" hätte ich mich nun nicht weiter gestört.

            "Wow, 'ne Ethik-Diskussion..."
            "Ich möchte Dich freundlichst bitten, bevor Du solche Anschuldigen postest, die Frage nochmal genau durchzulesen."
            "Hättest Du das kleine Skriptbeispiel gelesen (...)"
            "Hoffe, Deinen Gerechtigkeitssinn ein wenig beruhigt zu haben."

            Wir haben offensichtlich unterschiedliche Ansichten darüber, was freundlich ist *g*

            Dazu kommt, dass der OP offensichtlich nicht auf die Idee kommt, seinen Versuch, etwas wie ein File-Locking mit clientseitiger Technik umzusetzen, zu hinterfragen und andersrum keinerlei Verständnis dafür zeigt, dass ich nicht intuitiv verstehe, dass er per JavaScript eine Art File-Locking zu simulieren versucht (immer gesetzt den Fall ich hätte *jetzt* verstanden was er eigentlich zu gedenkt).

            Grüße,
            Utz

            --
            Mitglied im Ring Deutscher Mäkler
            1. Hi,

              Wir haben offensichtlich unterschiedliche Ansichten darüber, was freundlich ist *g*

              scheint so.

              Dennoch hätte ich diese Antwort jetzt:

              [...] etwas wie ein File-Locking mit clientseitiger Technik umzusetzen [...]

              • gern auch mit einer Kritik an der Äußerung - wesentlich konstruktiver empfunden.

              freundliche Grüße
              Ingo