Marc Dannemann: Wert aus Popupfenster übergeben

Hallo Leute, folgendes Problem:
ich möchte für meine Seite eine Suchfunktion einbauen, die sich in einem Popupfenster öffnet. Nachdem dann in diesem neuen Fenster die Werte gefiltert worden sind möchte ich, dass bei Klick auf einen Link der gewünschte Benutzername wieder an das Ursprungsfenster, aus dem das Popup geöffnet wurde zurückgegeben wird und gleichzeitig auch das Popup geschlossen wird. Doch leider besitze ich nicht wirklich sehr viele Kenntnisse in Javascript, so dass ich dieses Problem leider nicht ohne Hilfe lösen kann. Gibt es ein bestimmtes Objekt, mit dem das Ursprungsfenster angesprochen wird oder funktioniert das ganz anders? Würde mich über eure Hilfe sehr freuen.

Mfg Marc

  1. der gewünschte Benutzername wieder an das Ursprungsfenster, aus dem das Popup geöffnet wurde zurückgegeben wird und gleichzeitig auch das Popup geschlossen wird.

    function übergebenUndSchließen () {
       var benutzername = "foo";
       opener.benutzername = benutzername;
       window.close();
    }

    Nach Aufruf der Funktion steht im Ausgangsfenster eine globale Variable namens benutzername zur Verfügung, die den Wert "foo" enthält.
    Und das Popup-Fenster wird geschlossen (http://de.selfhtml.org/javascript/objekte/window.htm#close).

    Gibt es ein bestimmtes Objekt, mit dem das Ursprungsfenster angesprochen wird

    Richtig vermutet, es lautet opener.

    http://aktuell.de.selfhtml.org/artikel/javascript/fensterzugriff/

    Mathias

    1. Hallo Mathis, das funktioniert soweit schonmal gut. Wenn ich jetzt per alert(opener.benutzername) den Wert der Variablen anzeige passt das ganze.

      Nach Aufruf der Funktion steht im Ausgangsfenster eine globale Variable namens benutzername zur Verfügung, die den Wert "foo" enthält.

      Allerdings überlege ich jetzt noch, wie ich mittels einer Funktion bzw. einer Anweisung den Wert an meine Textbox im Formular übergebe, wenn ich den Wert aus dem Popup erhalten habe. Denke mal dass das mit einem Event-Handler gehen wird allerdings habe ich schon mehrere Sachen ausprobiert, die allesamt nicht funktioniert haben. Hoffe du kannst mir auch noch bei dieser kleinen Stolperfalle helfen!

      Mfg Marc

      1. den Wert an meine Textbox im Formular übergebe, wenn ich den Wert aus dem Popup erhalten habe

        Du kannst den Wert eines Formularfeldes im Ausgangsfenster auch direkt aus dem Popup-Fenster beschreiben:

        opener.document.forms.MeinFormular.elements.MeinFeld.value = "foo";

        Oder über eine ID:

        opener.document.getElementById("MeinFeldId").value = "foo";

        Siehe:
        http://de.selfhtml.org/javascript/objekte/elements.htm (Allgemeine Verwendung)
        http://de.selfhtml.org/javascript/objekte/elements.htm#value
        http://de.selfhtml.org/javascript/objekte/document.htm#get_element_by_id

        Einen Event »hat Daten aus dem Popup-Fenster empfangen« gibt es nicht, du kannst höchstens vor dem Schließen eine Funktion im Ausgangsfenster anstoßen. Z.B.

        opener.funktion("wert")

        Ansprechen des Formularsfeldes geht dann wie oben, nur ohne opener davor.

        Mathias

        1. opener.document.forms.MeinFormular.elements.MeinFeld.value = "foo";

          Manchmal frage ich mich echt warum ich auf sowas nicht alleine komme ;)
          Jedenfalls nochmal besten Dank für die Info!

          Mfg Marc

          1. Hello,

            opener.document.forms.MeinFormular.elements.MeinFeld.value = "foo";

            Manchmal frage ich mich echt warum ich auf sowas nicht alleine komme ;)

            Und wo Du schonmal dabei bist, kannst Du auch gelich noch überlegen, was wohl passiert, wenn das Opener-Fenster zuerst geschlossen wird und dann erst das Popup. :-)

            Liebe Grüße aus dem Cyberspace

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Und wo Du schonmal dabei bist, kannst Du auch gelich noch überlegen, was wohl passiert, wenn das Opener-Fenster zuerst geschlossen wird und dann erst das Popup. :-)

              Mh nun ja, da ich nicht wirklich eine große Leuchte in Javascript bin würde ich jetzt einfach mal raten und sagen dass gar nichts passiert, außer halt, dass sich das Fenster schließt?? Du wirst jetzt wahrscheinlich schmunzeln weil es bestimmt völliger Blödsinn ist aber das ist mir dann auch egal ;) Wäre auf jeden Fall nett, wenn du es mir verraten würdest, dann bin ich in Sachen JS wieder ein bisschen schlauer!

              Mfg Marc

      2. Hi,

        Allerdings überlege ich jetzt noch, wie ich mittels einer Funktion bzw. einer Anweisung den Wert an meine Textbox im Formular übergebe, wenn ich den Wert aus dem Popup erhalten habe. Denke mal dass das mit einem Event-Handler gehen wird

        Dazu brauchst du keinen Event, das kannst du direkt aus dem Popup heraus machen.
        Wie man auf Formularfelder zugreifen kann, hast du dir ja sicher schon angesehen - und vor das document, mit dem die dortigen Anweisungen beginnen, setzt du einfach noch die Referenz auf dein Fenster davor, um auf das "richtige" Dokument zuzugreifen:

        opener.document.deinFormularName.deinFeldName = wert;

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.