fks: warum um gottes namen geht das nicht? ein javascript "fehler"

hallo... habe zwei dateien...

diese:
.........................................................
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Test</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">

<script language="JavaScript1.2">
  function thumbpick()
  {
  window.open("2.htm", "test","width=200,height=200,menubar=no,toolbar=no,scrollbars=no,resizable=no,directories=no,location=no,status=no");
  }
</script>
</HEAD>
<BODY>
<br>
<a href="#" onClick="thumbpick()">lade</a><br>
<input type="text" name="test" value="nix">
</BODY>
</HTML>
.........................................................

und jene...

.........................................................
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML><HEAD><TITLE>Test</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<SCRIPT type=text/javascript>
<!--
function schreibe()
{
  parent.opener.test.value = "http://www.xyz.at";
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<A href="javascript:schreibe()">setze</A>
</BODY>
</HTML>
.........................................................

Das ganze funktioniert doch tadellos? oder?

ja, jetzt mein problem...
wenn ich mein input in ein formular packe, dann geht nix mehr...
auch wenn ich die funktion schreibe() auf
parent.opener.meinformularname.test.value = "http://www.xyz.at";
setze...

help :o(

mfg
fks

  1. Hallo,

    parent.opener.meinformularname.test.value = "http://www.xyz.at";

    ^^^^^^^
    Ist die zweite Datei ("jene") in einem Frameset? Wenn nicht, versuch's mal ohne "parent.", also nur mit "opener.meinformularname.test.value".

    Das würde aber noch nicht erklären, warum es ohne Formular trotzdem funktioniert.

    Robert

    1. Hi,

      Ist die zweite Datei ("jene") in einem Frameset? Wenn nicht,

      ...dann ist parent == top == self == window == self.top.parent.window.top.top.self.

      Cheatah

      1. Hallo,

        Ist die zweite Datei ("jene") in einem Frameset? Wenn nicht,

        ...dann ist parent == top == self == window == self.top.parent.window.top.top.self.

        Hab's gerade ausprobiert - stimmt. Allerdings nutzt du meiner Meinung nach eine "Sprachunschönheit" oder "Unlogik" aus, wenn du parent in einem Fenster ansprichen willst, das gar kein Elternfenster hat. Ich fände es also sehr "unelegant".

        Aber es ist technisch möglich, da hast du recht und ich hab' mich vertan.

        Robert

        1. Hi,

          Allerdings nutzt du meiner Meinung nach eine "Sprachunschönheit" oder "Unlogik" aus, wenn du parent in einem Fenster ansprichen willst, das gar kein Elternfenster hat. Ich fände es also sehr "unelegant".

          nein, das ist so definiert und daher keineswegs unschön: _Jedes_ window-Objekt hat einen parent und einen top, welche im Zweifel eine Selbstreferenz sind. Wäre es anders, müsste man potentiell auch bei der Abfrage "if (self==top)" eine Fehlerbehandlung einbauen.

          Cheatah

          1. Hallo,

            nein, das ist so definiert und daher keineswegs unschön: _Jedes_ window-Objekt hat einen parent und einen top, welche im Zweifel eine Selbstreferenz sind.

            Du verstehst noch nicht ganz, was ich meine. Vielleicht hab' ich mich auch missverständlich ausgedrückt.

            Natürlich ist es so definiert, dass jedes Fenster ein parent hat, sonst würde es ja nicht funktionieren. Ich wollte nur sagen, dass ich es unlogisch finde, das Elternfenster eines Fensters anzusprechen, dass eigentlich gar kein Elternfenster hat.

            OK, aber dass ist natürlich nur meine (unqualifizierte) Ansicht und eigentlich auch überhaupt nicht wichtig ;-)

            Wäre es anders, müsste man potentiell auch bei der Abfrage "if (self==top)" eine Fehlerbehandlung einbauen.

            Nein. Das jedes Fenster ein "top" hat und dass dieses auch das Fenster selbst sein kann, ist ja logisch.

            Nimm statt Fenstern Buchseiten:

            Von jeder Ausgangsseite aus könnte man mit "first" die erste Seite des jeweiligen Buches adressieren. Das first heißt dann soviel wie "die erste Seite des Buches, in dem auch die Ausgangsseite vorkommt". Damit hätte auch die erste Seite selbst ein "first", denn es gibt ein Buch, in dem diese (Ausgangs-)Seite vorkommt und dieses Buch hat eine erste Seite.

            Analog dazu könnte man mit "previous" die jeweils vorhergehende Seite einer Ausgangsseite adressieren. Das previous bedeutet dann "die Seite, die in dem Buch, in dem auch die Ausgangsseite vorkommt, genau eine Seite vor dieser Ausgangsseite zu finden ist". Damit hätte jede Seite ein previous, nur nicht die erste Seite, denn es gibt zwar ein Buch, in dem diese (Ausgangs-)Seite vorkommt, aber in diesem Buch gibt es keine Seite, die genau eins vor der Ausgangsseite steht.

            OK, der Vergleich ist nicht besonders toll gewählt. Was ich schreibe hat jetzt auch nichts mehr mit der Struktur von Javascript zu tun, denn es ist nunmal so definiert, dass jedes Fenster ein parent hat. Ich wollte dir nur zeigen, warum ich es unlogisch finde, dich aber auch nicht unbedingt überzeugen.

            Genaugenommen ist's ja sowieso egal ;-)

            Robert

  2. Hi,

    <META http-equiv=Content-Type content="text/html; charset=windows-1252">

    behufs welchen Grundes verwendest Du ein Charset, welches nur auf einem Bruchteil der Systeme bekannt ist, anstatt einem international gültigen wie z.B. ISO-8859-15?

    parent.opener.test.value = "http://www.xyz.at";

    Mach den Test ohne die fensterübergreifende Geschichte. Dieser Code entspricht im Ursprungs-Dokument folgendem:

    window.test.value = "http://www.xyz.at";

    Wenn das klappt, klappt auch obiges. Klappt es nicht, findest Du den Fehler durch scharfes Hingucken.

    parent.opener.meinformularname.test.value = "http://www.xyz.at";

    window.meinformularname.test.value = "http://www.xyz.at";

    Cheatah

  3. parent.opener.test.value = "http://www.xyz.at";

    opener.formular.test.value = ...

    danke perfekt.
    funktioniert. :o)

    mfg
    fks

    1. Hi,

      opener.formular.test.value = ...
      funktioniert. :o)

      auf welchem Browser? Bei den meisten ist das forms-Objekt nicht direkt unterhalb von windows angesiedelt.

      Cheatah

  4. Halloooooo! Liest du auch die Threads, die du selbst angefangen hast, zuende, bevor du _nochmal_ hilfe anforderst?

    Ich sag nur: http://forum.de.selfhtml.org/?m=96439&t=17214 von 14:19 und meine Antwort http://forum.de.selfhtml.org/?m=96581&t=17214 um 16:44. Hätte dir und dem Forum Arbeit erspart, wenn du einfach deinen Thread verfolgt hättest. Es gilt immer noch </faq/#Q-06c>

    - Sven Rautenberg