g.a.: wieso fehler?

hi,
wieso ergibt :

...
    parent.server.src = "index.php?url=var&want=gold";
    gold = parent.server.value;
...

...
  <frameset cols="0" rows="0">
  <frame src="" name="server">
  </frameset>
...

Error: parent.server has no properties
Source File: http://localhost/projekt2/index.php
Line: 14

???

ich hoffe ihr seit gut in mathe. :-)

könnt ihr mir helfen?

  1. Hallo g.a.,

    Was fuer einen value soll ein Frame denn haben?

    Gruß,

    Dieter

    1. na der inhalt der geladenen seite.

      z.B.:
      "
      <html>
      <head></head>
      <body>hallo</body>
      </html>
      "

      oder das was ich damit bezwecken will.
      nämlich das einlesen von daten von einem php script(server)
      an den clienten ohne eine neue seite zu laden.
      (zumindest nicht die hauptseite)

      1. Hallo g.a.,

        value ist etwas, das Formelelemente wie <input> usw. haben. Frames haben u.U. name, id und src (was vergessen?). Den Inhalt einer Datei, die in einem Frame geladen ist kannst Du nur ueber DOM einlesen, allerdings nur begrenzt. Realistisch betrachtet brauchst du eine serverseitige Technik.

        Gruß,

        Dieter

        1. aber der client soll ja die anfrage stellen.
          nicht der server, oder?

          1. Hallo g.a.,

            Du willst aber den Inhalt der angefragten Datei wissen, also das was der Server antwortet. Um Informationen daraus an das parent Fenster weiterzuleiten, musst du ueber DOM auf die einzelen Elemente der Datei im Frameset zugreifen und diese mit Javascript zur parent Seite uebertragen.

            Gruß,

            Dieter

            1. und wie?

              hab nämlich nichts zu dem thema gefunden.
              (bin wohl schlecht im suchen)

              1. hi,

                und wie?

                hab nämlich nichts zu dem thema gefunden.
                (bin wohl schlecht im suchen)

                oder schlecht im ausreden für faulheit erfinden ...

                im ernst: entweder du beschäftigst dich jetzt mal ein bisschen eingehender mit den grundlagen von javascript, oder du lässt es bleiben.

                gruß,
                wahsaga

                --
                "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                1. hab ich doch.

                  aber im thema "javascript/DOM" gibts nur sachen zum thema javascript.
                  ich habe mir jetzt in den letzten tagen/wochen (18tage) das thema "javascript/DOM" fast kommplett durchgelesen.
                  (auch wenn ich mir nicht alles gemerkt hab)
                  aber weiss immernochnich wofür DOM überhaupt steht!
                  ich hab auch kein bock auf die ganze s*****,
                  wenn ich mich erst halb tot suche, nichts finde, und dann auch noch beschuldigt werde dass ich zu faul bin!!!
                  wenn ich mich mich noch eingehender damit beschäftige,
                  bin ich bald bereit dafüber ne bibel zu schreiben!!!
                  zuhause nur ärger weil sich meine eltern bald tod haun,
                  in der schule auch nur scheisse!!!
                  und da will ich mich mal ein bischen davon ablenken, gehts hier gleich wieder los oder was?!?!?
                  ich glaub ich muss mich ersma abregen von dem ganzen müll der bei mir leuft!!
                  ich melde mich in 30minuten nochmal.

                  1. Hiho,

                    aber weiss immernochnich wofür DOM überhaupt steht!

                    ok, machen wir mal den Test: Und go (17:54:30)
                    ...
                    Und stop (17:55:20)
                    In der Zeit habe ich sowohl eine Erklärung gefunden wofür DOM steht (Document Object Model) als auch eine Erklärung was es ist und grobe Informationen wie mand amit umgeht. Und das ohne mich damit vorher beschäftigt zu haben. So genau kannst du also nicht gesucht haben, denne s reicht eigentlich einfach mal "DOM" bei den üblichen Verdächtigen einzugeben (google, selfhtml, wikipedia) und schon hast du genug material.

                    Marc

                    1. wo stand das?
                      ich hab das natürlich auch versucht,
                      aber kam bei google:
                      möglichkeit a: "hier lernen sie javascript,php,c++,basic,u.s.w... in nur 1tag!!!(für nur 28,99pro minute)"
                      meine meinung: "papa, haste mal ne million übrig?"

                      möglichkeit b: "DOM artikel bei ebay, billig und gut"
                      meine meinung: "einmal DOM bitte"

                      möglichkeit c: "geschichte des programmieren" + "wer hats entwickelt" + "wann wurde es entwickelt" + "wo wurde es entwickelt" aber keine erklärung was es ist.
                      meine meinung: "alles was die welt nicht brauch"

                      aber ich hab nicht alles durchsucht, nur die ersten 70 ergebnisse

                      bei selfhtml: thema: "javascript/DOM" inhalt "javascript"
                      meine meinung: "und wo ist DOM geblieben?"

                      und wikipedia kenn ich nich.
                      soviel dazu.

                      tut mir leid wenn ich vorhin ein bisschen "aufgebraust" war.
                      aber dass musste mal raus.
                      hab nen schlechten tag erwischt.
                      entschuldigung.

                      1. hi,

                        bei selfhtml: thema: "javascript/DOM" inhalt "javascript"
                        meine meinung: "und wo ist DOM geblieben?"

                        http://de.selfhtml.org/javascript/intro.htm
                        jetzt erzähl bitte nicht, da würdest du keine information zum thema DOM finden.

                        gruß,
                        wahsaga

                        --
                        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                        1. nochnichmal die suchfunktion von mozilla hat was gefunden.
                          siehe post über demhier

                          1. könnten wir damit aufhören und uns wieder dem thema widmen?

                            also:
                            ich suche eine möglichkeit um daten zwischen client(javascript)
                            und server(php) auszutauschen, ohne das an der seite optisch was verändert wird.

                            1. Hallo g.a.,

                              könnten wir damit aufhören und uns wieder dem thema widmen?

                              Wahsaga hat's gepostet, ich hab's gepostet, klicken musst du selbst
                              http://de.selfhtml.org/javascript/index.htm
                              Du musst deine Seite mit den geaenderten Informationen vom Server laden, soweit waren wir ja schon. Mit document.getElementById() und weiteren Methoden, die du alle unter http://de.selfhtml.org/javascript/objekte/document.htm nachlesen kannst, greift du auf die einzelnen Inhalte zu und  transportierst sie ins parent document.

                              Gruß,

                              Dieter

                              1. Hallo,

                                oder als Wink mit dem Zaunpfahl: Tipp mal

                                javascript:alert(document.getElementsByTagName("body")[0].innerHTML)

                                in die Adresszeile des Browsers und such dann nach getElementsByTagName und nach innerHTML, wobei letzteres zwar nicht zum DOM gehört, sondern zu Microsofts Implementierung des DHTML, aber in den neueren Browsern bekannt ist. Wie Du jetzt noch von einem Frame zum anderen kommst, steht ja schon im Ausgangsposting.

                                Gruß, Jürgen

                                1. das is DOM?
                                  ich dachte das wäre noch javascript,
                                  aber weil ihr dom gesagt habt,
                                  habe ich es übersprungen.

                                  langsam klärt sich einiges auf.

                                  ich hab mich mit diesem getelement... noch nie beschäftigt.
                                  danke, ab jetz gehts glaubich auch alleine.
                                  also müsste doch auch parent.server.getelementsbytagname("body") gehen, oder?

                                  danke für die hilfe

                                  1. Hallo g.a.,

                                    also müsste doch auch parent.server.getelementsbytagname("body") gehen, oder?

                                    Aber achte auf die Groß/Kleinschreibung. Ansonsten probier es aus und besorge Dir einen Browser mit ordentlicher Javascriptkonsole, z.B Firefox.

                                    Folgende Artikel könnten noch interessant für Dich sein:

                                    http://aktuell.de.selfhtml.org/tippstricks/javascript/fensterzugriff/
                                    http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe-2/index.htm

                                    Gruß, Jürgen

                                    1. ok,
                                      aber ich merke grade das mein problem immernochnicht gelöst ist.

                                      hier wieder die mathematik:

                                      "
                                      function getvar(vari)
                                      {
                                      parent.server.src="http://localhost/projekt2/index.php?un=',$un,'&pw=',$pw,'&url=var&want=" + vari;
                                      return parent.server.getElementsByTagName("body")[0].innerHTML;
                                      }
                                      "

                                      "
                                      <frameset cols=0 rows=0>
                                      <frame src= name=server>
                                      </frameset>
                                      "

                                      =

                                      "
                                      Error: parent.server has no properties
                                      Source File: http://localhost/projekt2/index.php?un=admin&pw=1234&url=game
                                      Line: 15
                                      "

                                      ???

                                      1. Hallo g.a.,

                                        wer ruft getvar(vari) wann auf? Ist das Frameset zu dem Zeitpunkt schon vollständig geladen? Evtl. musst Du den onload-Eventhandler benutzen.

                                        In der Zeile <frame src= name=server> solltest du schon ein "src" angeben. Sonst hast Du einen leeren Frame. Was sagt denn der Validator denn dazu?

                                        Gruß, Jürgen

                                        1. es soll ja auch leer sein.

                                          erklärung zu getvar(vari)
                                          getar(vari) verbindet sich mit dem server und holt die angefragte variable"vari"
                                          dies tut er indem er dem frame nen neuen src gibt,
                                          und dann den inhalt des frames einliest.

                                          wenn keine variable benötigt wird, ist es leer.
                                          (also am anfang)

                                          1. ok.
                                            hab mir den quelltext nochmal angeguckt.

                                            getvar wird erst aufgerufen, wenn die seite komplett geladen ist.(durch den user)

                                          2. Hallo g.a.,

                                            es soll ja auch leer sein.

                                            ich glaube, bin aber nicht sicher, das im <frame src= name=server> eine url für src angegeben werden muss, z.B. eine leere Seite. Daher der Hinweis, den Validator zu befragen.
                                            Übrigens, Textattribute müssen in "" stehen: <frame src="leer.html" name="server">.

                                            Gruß, Jürgen

                                            1. ich glaube es ist am besten wenn ihr euch den client-quelltext mal anguckt. oder?

                                              quelltext:

                                              "

                                              <html>
                                                <head>
                                                  <title></title>
                                                  <meta content="">
                                                  <style>
                                                  </style>

                                              <script type="text/javascript">

                                              function getvar(vari)
                                              {

                                              parent.server.src="http://localhost/projekt2/index.php?un=',$un,'&pw=',$pw,'&url=var&want=" + vari;
                                              return parent.server.getElementsByTagName("body")[0].innerHTML;

                                              }

                                              function karte()
                                                  {
                                                  window.open("","karte","width=310,height=400,left=320,top=0");
                                                  }

                                              function inventar()
                                                  {
                                                  window.open("","karte","width=310,height=400,left=320,top=0");
                                                  }

                                              function team()
                                                  {
                                                  teamw = window.open("","karte","width=700,height=400,left=320,top=0");

                                              teamw.window.document.write("<body bgcolor=black text=white><table border=5>");

                                              stop=2;
                                              while(stop==2)
                                              {
                                              teamw.window.document.write("<tr><td>");

                                              teamw.window.document.write("name   -  " + getvar("") + "<br>");
                                              teamw.window.document.write("rasse  -  " + getvar("") + "<br>");
                                              teamw.window.document.write("level  -  " + getvar("") + "<br>");
                                              teamw.window.document.write("<br>");
                                              teamw.window.document.write("verteidigung:<br>");
                                              teamw.window.document.write("licht      = " + getvar("") + "<br>");
                                              teamw.window.document.write("schatten   = " + getvar("") + "<br>");
                                              teamw.window.document.write("gift-def   = " + getvar("") + "<br>");
                                              teamw.window.document.write("feuer-def  = " + getvar("") + "<br>");
                                              teamw.window.document.write("wasser-def = " + getvar("") + "<br>");
                                              teamw.window.document.write("eis-def    = " + getvar("") + "<br>");
                                              teamw.window.document.write("metall-def = " + getvar("") + "<br>");
                                              teamw.window.document.write("erde-def   = " + getvar("") + "<br>");
                                              teamw.window.document.write("<br>");
                                              teamw.window.document.write("angriff:<br>");
                                              teamw.window.document.write("art     =  " + getvar("") + "<br>");
                                              teamw.window.document.write("spezial =  " + getvar("") + "<br>");
                                              teamw.window.document.write("atk     =  " + getvar("") + "<br>");

                                              teamw.window.document.write("<br></td>");
                                              stop=1;

                                              }

                                              teamw.window.document.write("</tr></teable>");

                                              }

                                              function zauber()
                                                  {
                                                  zauberw = window.open("","zauber","width=700,height=500,left=320,top=0");

                                              zauberw.window.document.write("<body bgcolor=black text=white><table border=2 width=100% height=100%><tr><td><center><h2>Beschworungen</h2></center><br>");

                                              zauberw.window.document.write("<h3>klasse 1:<br></h3>");

                                              anz=getvar("klasse1a");
                                              while(anz!=0)
                                              {
                                              zauberw.window.document.write(getvar("klasse1"));
                                              }

                                              zauberw.window.document.write("<h3>klasse 2:<br></h3>");

                                              zauberw.window.document.write("<h3>klasse 3:<br></h3>");

                                              zauberw.window.document.write("</td><td><center><h2>Elementar-zauber</h2></center><br>");

                                              zauberw.window.document.write("<h3>Schatten zauber:<br></h3>");

                                              zauberw.window.document.write("<h3>Erd zauber:<br></h3>");

                                              zauberw.window.document.write("<h3>kombinationen:<br></h3>");

                                              zauberw.window.document.write("</td><td><center><h2>fahigkeiten</h2></center><br>");

                                              zauberw.window.document.write("<h3>verteidigung:<br></h3>");

                                              zauberw.window.document.write("<h3>angriff:<br></h3>");

                                              zauberw.window.document.write("<h3>spezial:<br></h3>");

                                              zauberw.window.document.write("</td></tr></table>");
                                              }

                                              </script>

                                              </head>
                                                <body bgcolor="black" text="white">

                                              <frameset cols=1 rows=1>
                                              <frame src="leer" name="server">
                                              </frameset>

                                              <table border="1" width="100%">

                                              <center><font color="green" size=26>das game!</font></center>
                                              <tr><tdwidth=100%>
                                              <form name="anzeige">
                                              Gold:<font color="gold" size=5>',$gld,'</font>
                                              Name:<font color="red" size=5>',$un,'</font>
                                              Rasse:<font color="green" size=5>',$rsd,'</font></td></tr>
                                              level:<font color="blue" size=5>',$lvd,'</font></td></tr>
                                              klasse:<font color="blue" size=5>',$kld,'</font></td></tr>
                                              exp:<font color="grey" size=5>',$exd,'</font></td></tr>
                                              </form>
                                              <tr width=100%>

                                              <td width=10% valign="top">

                                              <form>
                                              <input type="button" value="karte" onclick="karte()"><br>
                                              <input type="button" value="inventar" onclick="inventar()"><br>
                                              <input type="button" value="team" onclick="team()"><br>
                                              <input type="button" value="zauber" onclick="zauber()"><br>

                                              </form>

                                              </td>

                                              <td><center>
                                              <textarea cols=150 rows=100 type="hidden"></textarea>
                                              </td>
                                              </tr>

                                              </table>
                                                </body>
                                              </html>

                                              "

                                              soweit bin ich bisher.
                                              natürlich ist noch nicht alles fertig.

                                              1. Hallo g.a.,

                                                irgendwie habe ich das Gefühl, Du hast die Sache mit den Frames noch nicht verstanden. Mach Dich erst mal kundig, wie das geht. Danach kannst Du dann die Frameinhalte mittels Javascript verändern. Der Validator hat die Seite doch bestimmt auch noch nicht gesehen.

                                                Gruß, Jürgen

                                                1. ok,
                                                  jetz gehts. zumindest fast.

                                                  gibt es noch weitere solche zeichen als ' und " ?

                                                  weil ich muss
                                                  "
                                                  return parent.frames[1].document.getElementsByTagName("body")[0].innerHTML
                                                  "

                                                  in ein timeout setzten.

                                                  dann würde dies so aussehen:

                                                  "
                                                  window.timeout("return parent.frames[1].document.getElementsByTagName("body")[0].innerHTML");

                                                  "

                                                  geht aber nicht ,weil body schon in einem "" ist.
                                                  also kann ich das ganze nicht in eine "" setzen.
                                                  aber ein '' geht auch nicht. weil der gesamte code bereits von einer '' umklammert ist. es wird ja vom server(php) per echo 'inhalt'; gesendet. also kann ich auch keine '' für das return benutzen.
                                                  was jetzt?

                                                  1. Hallo g.a.,

                                                    Du kannst " noch durch " maskieren.
                                                    Aber noch eine Frage: Wer soll wo und wann das, was das "return" im Argument von setTimeout zurückliefert, bearbeiten?

                                                    Gruß, Jürgen

                                                    1. Aber noch eine Frage: Wer soll wo und wann das, was das "return" im Argument von setTimeout zurückliefert, bearbeiten?

                                                      es soll ja ein browsergame werden.
                                                      aber anders als bei anderen soll es so eine art "GUI" haben,
                                                      das beim einloggen von server gesendet wird.
                                                      sie soll das ganze game über , bis zum ausloggen , im browser sein.
                                                      alle daten die im game benötigt werden sind nur kleine zahlen oder namen, die vom sever gesendet werden.
                                                      das sind die daten die das "return" zurückgibt.
                                                      da der frame aber so schnell nicht geladen werden kann muss das return erst erfolgen wenn der frame geladen ist. deswegen das setTimeout.
                                                      das heisst: das einloggen dauert etwas länger, aber dafür kann das game komplexer sein  als andere, weil es nicht immer neu laden muss.
                                                      das sorgt dafür das auch gamer mit geringerer bandbreite(analog) ordentlich und komplex spielen können.
                                                      daten können vom server zum clienten gesendet und dort verarbeitet werden.so können komplizierte berechnungen am clienten erfolgen und der server sich um andere sachen kümmern.
                                                      das is zumindest das was ich vorhab.

                                                      1. Hallo g.a.,

                                                        also, was return getElement...innerHTML zurückliefert, weiß ich nicht. aber wenn Du Dich für den Wert des innerHTML interessierst, solltest Du iH=getElement...innerHTML verwenden.
                                                        Mit einem Timeout darauf zu warten, dass eine Seite geladen ist, ist höchst unzuverlässig. Schau Dir mal den Eventhandler "onload" an.

                                                        Gruß, Jürgen

                                                        1. ja, manchmal denk ich unnötig umständlich um 10 ecken,
                                                          onload kenn ich schon, bin ich nur nich drauf gekommen.

                                                          1. und wie sagt onload dem getvar das er fertig geladen ist?

                                                            1. Hallo g.a.,

                                                              Du kannst aus dem einen Fenster auf Variablen und Funktionen eines anderen Fensters zugreifen: ich glaube fenstername.fkt(par) bzw. x=fenstername.var, bin mir aber nicht ganz sicher. Probiers mal, sonst musst Du es nachlesen.

                                                              Gruß, Jürgen

                                                              1. und wie bringe ich eine funktion dazu zu überprüfen ob im nachbarfenster onload aufgerufen wurde?

                                                                oder wie bringe ich onload dazu das es der funktion mitteilt das sie fertig geladen ist?

                                                                1. Hallo g.a.,

                                                                  versuch doch mal, mit onload eine Funktion aus dem anderen Fenster aufzurufen. Ich habe allerdings so etwas noch nie ausprobiert, aber Versuch macht klug.

                                                                  Gruß, Jürgen

                                                                  1. und wie soll diese zweite funktion die daten an die erste fuktion bringen?

                                                                    1. Hallo g.a.,

                                                                      hast Du schon die Artikel in https://forum.selfhtml.org/?t=101940&m=626713 gelesen?

                                                                      Gruß, Jürgen

                                                                      1. ja,
                                                                        aber das scheint nicht in funktionen zu funktionieren.

                  2. Hallo G.A.,

                    http://de.selfhtml.org/javascript/index.htm

                    ich hab auch kein bock auf die ganze s*****,

                    blabla, wenn Du keinen Bock hast, was zu lernen, lass es bleiben. Wahsaga mag manchmal ein bisschen rauhbeinig sein, aber deine Reaktion ist ziemlich heftig, finde ich. Also komm jetzt erst mal runter. Das hier ist SelfHTML, nicht selfMitleid. Probier die Beispiele auf den Seiten (auch den nachfolgenden), den ich gepostet habe aus und wenn du nicht weiterkommst, frag wieder nach.

                    Gruß,

                    Dieter

                    1. ich hab ja bock was zu lernen,
                      aber nicht hier verkohlt zu werden.

                      ausserdem finde ich einfach nichts.
                      ich bin schon auf "find in this page">dom gegangen.
                      ergebniss: er markiert die überschrift.
                      ich klicke auf "find next"
                      ergebniss: "the text you entered was not found"

                      also?

  2. Hi,

    parent.server.src = "index.php?url=var&want=gold";
        gold = parent.server.value;

    Hm, welches Objekt hat sowohl src-Attribut als auch einen value?

    <frameset cols="0" rows="0">
      <frame src="" name="server">
      </frameset>

    Manche Browser mögen framesets nicht, die nur einen einzigen Frame haben.
    Wenn das Frameset, das immer den vorhandenen Platz aufteilt, dann diesem einen Frame auch noch die Größenvorgabe 0*0 Pixel gibt, würde mich nichts mehr wundern ...

    ich hoffe ihr seit

    Seit wann?

    gut in mathe. :-)

    Naja, besser als Du in Deutsch ;-)

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hm, welches Objekt hat sowohl src-Attribut als auch einen value?

      ein frame, hoffe ich.

      Manche Browser mögen framesets nicht, die nur einen einzigen Frame haben.
      Wenn das Frameset, das immer den vorhandenen Platz aufteilt, dann diesem einen Frame auch noch die Größenvorgabe 0*0 Pixel gibt, würde mich nichts mehr wundern ...

      die ganze framegeschichte ist nur zur datenübertragung zwischen server und client gut. soll aber auf dem browser nicht sichtbar sein.

      Naja, besser als Du in Deutsch ;-)

      wieso? hab ne 2 in deutsch. (nur ne 5 in rechtschreibung. :-)