Nadja: Netscape Problemm

Hallo! Ich kann ein Problemm nicht lösen. Und zwar:
Fenster1 öfnet Fenster2. Ich schreibe ein Wert im Feld des Formulares Fenster2. Diesen Wert möchte ich an Fenster1 übergeben (Durch, dass ich ein Link anklicke). In IE funktionirt es, aber nicht in Netscape.

window.opener.document.Form.Feld.value=window.document.Form.Feld.value;

Danke für Antwort, Nadja

  1. Hallo Nadja!

    window.opener.document.Form.Feld.value=window.document.Form.Feld.value;

    <kristallkugel>
    Du benutzt eine <select> Liste.
    Im IE hat der value dann einen Wert, im NN muss aber explizit
    document.Form.Feld.selectedIndex stehen.
    http://selfhtml.teamone.de/javascript/objekte/options.htm#selected_index
    </kristallkugel>

    Ansonsten ergänzt der IE fehlende ", falsche Kommentar und diverses andere, ohne angemessene Fehlermeldungen zu erzeugen - ohne den Code kann man da nur raten.

    Gruss,
     Carsten

  2. Hallo! Ich kann ein Problemm nicht lösen. Und zwar:
    Fenster1 öfnet Fenster2. Ich schreibe ein Wert im Feld des Formulares Fenster2. Diesen Wert möchte ich an Fenster1 übergeben (Durch, dass ich ein Link anklicke). In IE funktionirt es, aber nicht in Netscape.

    window.opener.document.Form.Feld.value=window.document.Form.Feld.value;

    Hallo Nadja,
    Du kannst Fenster2 explizit eine Referenz auf Fenster1 mitgeben.
    Also in Fenster1 etwa:
      Fenster2 = window.open(...);
      Fenster2.MeinOpener = self;
    Dann kannst Du in Fenster2 schreiben:
      if(MeinOpener) MeinOpener.document.Form.Feld.value = ...
    und der Wert wird in Fenster1 gesetzt.
    Gruss
    Sebastian

    1. Hallo Sebastian!
      Ich habe jetz alles Mögliches mit deinem Vorschlag ausprobiert, aber es klappt leider nicht. Kannst du mir ein konkretes Beischpiel schicken?

      Gruss, Nadja

      1. Hallo Sebastian!
        Ich habe jetz alles Mögliches mit deinem Vorschlag ausprobiert, aber es klappt leider nicht. Kannst du mir ein konkretes Beischpiel schicken?

        Hallo Nadja,
        also, ich habe mal ein Farbauswahl-Fenster gebastelt,
        wo sowas dabei ist. Geh mal auf
         http://www.compagnie-djaseb.com/test/bolab/
        Das ganze Projekt ist nur halbfertig, aber den fraglichen
        Effekt gibt es dort schon. Es gibt im linken unteren
        Frame ein Feld "button-color (RGB)" mit drei
        Texteingabefeldern. Dahinter ist ein Link "choose...".
        Wenn Du den klickst, geht ein Farbauswahlfenster auf.
        Dort wählt man eine Farbe aus. Wenn man dann "Ok" drückt,
        wird das Farbauswahlfenster geschlossen und die RGB-Daten
        werden in die Felder im Hauptfenster übertragen.
        Die entscheidenden Passagen sind
         function chrgbopen(pref) {
          ...
          var w = window.open(...);
          w.focus();
          w.mainwindow = self;
          return w;
         }
        im Hauptfenster 'bolab/cgi/bolab.cgi' und dann
        im Farbauswahlfenster 'bolab/cgi/chrgb.cgi':
         var mainwindow;
         ...
         function selfapply() {
          if(!mainwindow) return false;
          if(!checkform()) return false;
          mainwindow.setcolor(mainpref, R, G, B);
          mainwindow.chrgbclose();
          return false;
         }
        Mit 'mainwindow.setcolor(...)' wird die Funktion
        setcolor im Hauptfenster aufgerufen und die Daten
        dort ins Formularfeld geschrieben. Ginge aber eigentlich
        auch direkt, denn mit 'mainwindow' hat man Zugriff auf
        alle Felder und Funktionen des Hauptfensters.
        Kann sein, dass das 'w.focus()' nach 'open' wichtig ist
        oder die Deklaration von 'var mainwindow' im Farbauswähler,
        weiss ich nicht. (Schliessen darf man das Fenster jedenfalls
        nur vom Hauptfenster aus, daher 'mainwindow.chrgbclose()'.)
        Ich habe es mit cgi-Programmen gemacht, weil die Übertragung
        der Daten vom Hauptfenster zum Farbauswahlfenster dann
        einfacher ist. Aber entscheidend ist ja nun der Rückweg,
        und da macht es keinen Unterschied.
        Also, viel Erfolg!
        Sebastian