daff: Variable aus einem Frame in anderes übertragen

Hallo
ich bin noch ein ziemliches JS-Noob. Ich kenn mich zwar rel gut mit php aus aber JS is für mich noch neuland. zu meiner frage:
wie kann ich eine variable aus einem frame in ein anderes frame bekommen ? ich hab mich mal n bissl durch selfhtml gelesen und dann herausgefunden, dass das z.b. mit parent.framename.id(3) möglich ist. da geb ich aber ner funktion ne variable mit, was ich aber garnicht will und was auch garnicht geht (zumindest bei dem was ich bisher probiert hab). ich will einfach nur, dass ich die variable, die ich in dem einen frame erzeugt hab in dem anderen frame weiter nutzen kann. Ist das möglich ? oder muss ich da doch mit php ran (was ich in dem fall eigentlich nicht wollte)

thx schonmal
daff

  1. Hallo,

    ich bin noch ein ziemliches JS-Noob.

    ist doch keine Schande!  ;-)

    Ich kenn mich zwar rel gut mit php aus aber JS is für mich noch neuland.

    Okay, aber dann sind dir wenigstens die Grundlagen der Programmierung vertraut.

    [...] dass das z.b. mit parent.framename.id(3) möglich ist.
    ich will einfach nur, dass ich die variable, die ich in dem einen frame erzeugt hab in dem anderen frame weiter nutzen kann.

    Genauso wie der Zugriff auf Funktionen in einem anderen Fenster/Frame ist auch der Zugriff auf Variablen möglich: Über parent.framename.varname.
    Voraussetzung ist, dass das Dokument im anderen Fenster/Frame von derselben Domain stammt, ansonsten wird der Zugriff verweigert. Das ist eine Sicherheitsfunktion von Javascript (Same Origin Policy).

    So long,
     Martin

    --
    Okay, Alkohol ist keine Antwort.
    Aber manchmal vergisst man beim Trinken wenigstens die Frage.
    1. hallo
      cool dass du so schnell antworten konntest. leider geht es bei mir immernoch nicht. hier mal meine 3 dateien:

      index.html:

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <title>Unbenanntes Dokument</title>
      </head>

      <frameset cols="400,*" frameborder="yes">
        <frame src="links.html" name="links" id="links" title="links" />
        <frame src="content.html" name="content" id="content" title="content" />
      </frameset>
      <noframes><body>
      </body>
      </noframes></html>

      ---------------------------------------------
      links.html

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <title>Unbenanntes Dokument</title>
      </head>

      <body>
      <script type="text/javascript">
      var x = 44;
      document.write(x);
      parent.content.x;
      </script>
      </body>
      </html>

      --------------------------------------------
      content.html

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <title>Unbenanntes Dokument</title>
      </head>

      <body>
      <script type="text/javascript">
      document.write(x);
      </script>
      </body>
      </html>

      ich weiß echt ne was ich falsch mache.
      daff

      1. n'Abend!

        <frameset cols="400,*" frameborder="yes">
          <frame src="links.html" name="links" id="links" title="links" />
          <frame src="content.html" name="content" id="content" title="content" />
        </frameset>

        Nur zwei Frames, da bleibt es noch überschaubar.


        links.html
        <script type="text/javascript">
        var x = 44;
        document.write(x);

        Bis hierher sollte es ja ohne weiteres funktionieren.

        parent.content.x;

        Was ist das für 'ne Anweisung?
        "Lies die Variable x aus dem Frame mit dem Namen content und tu nichts damit".

        Erstens ist in content keine Variable x deklariert, zweitens hätte die Anweisung keine Auswirkung, selbst wenn es die Variable gäbe.


        content.html
        <script type="text/javascript">
        document.write(x);

        Moment, das x war doch im anderen Frame definiert! Hier müsstest du mit document.write(parent.links.x); darauf zugreifen. Abgesehen davon, dass es da einen Namenskonflikt mit dem vordefinierten Array links[] gibt. Ändere den Namen lieber, das kann sonst ein ziemliches Durcheinander geben.

        Ciao,
         Martin

        --
        Auf jeden Menschen auf der ganzen Welt entfallen statistisch gesehen etwa 3000 Spinnen, wie Wissenschaftler jetzt festgestellt haben.
        Wer will meine haben? Denn ich will sie bstimmt nicht.
        1. Hallo Martin.

          Abgesehen davon, dass es da einen Namenskonflikt mit dem vordefinierten Array links[] gibt. Ändere den Namen lieber, das kann sonst ein ziemliches Durcheinander geben.

          Eigentlich nicht, da zwischen der selbstgesetzten Variable window.links und der vordeklarierten Kollektion (window.)document.links noch ein Unterschied besteht.

          Einen schönen Samstag noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
          [HTML Design Constraints: Logical Markup]