Jeena Paradies: focus() auf Elternfenster funktioniert nicht im IE und Opera

Hallo,

Ich habe eine kleine Testseite vorbereitet: http://test.jeenaparadies.net

Dort setze ich ein JavaScript ein, welches mir daten aus dem Popup (welches mit einem klick auf den Bild auswählen Button öffnet) in die Haupt Textarea auf der Seite in Cursorposition einfügt.

Das Funktioniert im Firefox auch wunderbar, doch irgendwie gibt es blöde Probleme im Opera (und auch im IE glaube ich). Mittels:

  opener.document.forms['entryform'].elements['content'].focus();  
  sel = document.selection.createRange();  
  sel.text = insText;

wird da eigentlich der insText an Cursorposition eingefügt. Das klappt aber nur so lange das vom gleichen Fenster aus geschiet wo auch die Textarea ist, wo reingeschrieben wird. Sobald ich das aus einem PopUp mache wird die Textarea nicht mehr fokusiert und der Text wird da eingefügt wo es als letztes fokusiert war und das ist das Formular im PopUp.

Hat jemand einen Rat für mich was ich da machen könnte?

Grüße
Jeena Paradies

  1. Hallo Jeena,

    Hat jemand einen Rat für mich was ich da machen könnte?

    Hmm, für mich _schreit_ das Ganze irgendwie danach, dass du eine neue Funktion im opener-Dokument schreiben solltest, die vom Popup aus aufgerufen wird. Diese bekommt die Parameter einfach übergeben, und kümmert sich dann darum dass der Inhalt an entsprechender Stelle eingefügt wird.

    Ich habe jetzt keine Ahnung davon, ob es tatsächlich klappen könnte - ich würde es aber bestimmt so machen. :-)

    Grüße

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Hallo,

      Hmm, für mich _schreit_ das Ganze irgendwie danach, dass du eine neue Funktion im opener-Dokument schreiben solltest, die vom Popup aus aufgerufen wird. Diese bekommt die Parameter einfach übergeben, und kümmert sich dann darum dass der Inhalt an entsprechender Stelle eingefügt wird.

      Ah sehr sehr interessant was du da vorschlägst, auf jeden Fall.

      Ich habe jetzt keine Ahnung davon, ob es tatsächlich klappen könnte - ich würde es aber bestimmt so machen. :-)

      Wie sage ich denn jetzt aber dass die Funktion im Opener Dokument ablaufen soll? Ich habe halt alle Funktionen in einer externen JavaScript Datei und weiß jetzt absolut nicht wie ich via JavaScript jetzt eine Funktion innerhalb des Opener Dokuments ausführen soll, anny suggestions?

      Grüße
      Jeena Paradies

      1. Lieber Jeena,

        in deinem parent-fenster existiert eine - wie auch immer eingebundene - Funktion foo(bar). Aufrufen kannst Du sie mit

        Fenstername.foo(bar); oder auch mit
        parent.foo(bar);

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        1. Hallo,

          Fenstername.foo(bar); oder auch mit
          parent.foo(bar);

          Klingt zwar ganz einfach, aber irgendwie will es doch nicht so funktionieren wie ich will. Ich bekomme jetzt im FireFox so etwas in als Fehler:

          Error: document.forms.entryform has no properties
            Source File: http://test.jeenaparadies.net/javascripts.js
            Line: 20

          Vielleicht hilft es wenn ihr mal einen Blick in den Quellcode macht: http://test.jeenaparadies.net/?

          Grüße
          Jeena Paradies

          1. Fenstername.foo(bar); oder auch mit
            parent.foo(bar);
            Klingt zwar ganz einfach, aber irgendwie will es doch nicht so funktionieren wie ich will. Ich bekomme jetzt im FireFox so etwas in als Fehler:

            Wenn ich das richtig sehe, kannst du dir das SKript im popup sparen und die Funktion über opener aufrufen:

            opener.parent.foo(bar);

            Struppi.

            1. Hallo,

              Wenn ich das richtig sehe, kannst du dir das SKript im popup sparen und die Funktion über opener aufrufen:

              opener.parent.foo(bar);

              Das glaube ich ja nicht, es funk-funktioniert :-) grins. Ich verstehe nur noch nicht ganz warum es im Konqueror nicht funktioniert. Hat vielleicht jemand von euch einen Safari um das dort zu überprüfen ob es dort funktioniert?

              http://test.jeenaparadies.net

              Grüße
              Jeena Paradies

  2. Hallo,

    Ich habe eine kleine Testseite vorbereitet: http://test.jeenaparadies.net

    opener.document.forms['entryform'].elements['content'].focus();

    sel = document.selection.createRange();
      sel.text = insText;

      
    ich bekomme da im Moz/FF nur einen JS-Error: document.forms.entryform has no properties und zwar in der Zeile  
    `var field = document.forms['entryform'].elements['content'];`{:.language-javascript}  
      
    Das ist auch verständlich, weil die Funktion jlog\_insertAtCursor() ja im Popup aufgerufen wird und da habe ich im JS-Code kein opener.Document... sehen können.  
      
    Wenn das allerdings nur in deinem Online-Beispiel so ist und ansonsten funktioniert, dann versuche es doch einmal so:  
    Rufe aus dem Popup eine Funtion im Hauptfenster auf, der du die Parameter aus dem Popup übergibst. Diese schliesst als erstes das Popup und verfährt dann weiter wie gehabt.  
      
    cu,  
    Michael