melko: window.open() + FireFox Fehler beim Laden??

Hallo!

Ein sehr merkwürdiges Problem: Ich öffne eine Seite beim anklicken eines Buttons durch eine Funktion in der window.open() gemacht wird... Diese Funktion ist in einem js-file...
Nun das aufzumachende Fenster benutzt das selbe js-script und die Seite wird aufgemacht jedoch werden Variablen die ich in diesem js-file definiert habe nicht eingelesen...
ABER wenn ich dann auf einen link drücke der dann auch über das js-file eine weitere Seite aufmacht geht es auch... nun die große Frage: Warum liest er die Variable aus dem js-file nicht ein obwohl er das js-file eingelesen hat??
Übrigens tritt dieser Fehler nur mit FireFox auf... Also mit IE geht alles super!!

Bitte um euere Vorschläge. DANKE

Gruß melko

  1. Hi,

    Ein sehr merkwürdiges Problem:

    leider auch eine sehr merkwürdige Problembeschreibung, ich habe nämlich kein Wort verstanden. Könntest Du die Geschichte bitte noch mal so ausführen, dass man sich nicht in Deinem Kopf befinden muss, um zu begreifen, wovon Du redest? Eine Untermauerung mit Hilfe eines Links könnte ebenfalls helfen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. OK ich versuchs nochmal zu erklären: es ist schwierig...

      Nun ich habe ein Button auf einer Seite das durch den klick darauf auf eine funktion zugreift in meinem js-file...
      Beispiel:
      <input type="button" value="Anfrage senden" class="button" onClick="link()"></input>

      Die Funktion link():

      window.open(linkPage +"?" +window.document.forms[frm].elements[3].value + '&' + window.document.forms[frm].elements[4].value);

      in der Variable linkPage steht "main.htm"

      Nun nach dem Klick macht er mir main.htm auf... Die sieht folgender Weise aus:

      <html>
      <head>
      <script language="JavaScript" src="calendar.js"></script>
      </head>
      <body bgcolor="#FFFFFF" topmargin=10 leftmargin=0 marginheight=0 marginwidth=0>
      <table width="720" border="1">
      <FORM NAME="QueryForm" METHOD="POST" id="formular">
      <tr><td valign="top" width="250">Gewünschter&nbsp;Anreisetag</td>
      <td valign="top"><INPUT TYPE="TEXT" NAME="TIS.DateArrive" SIZE=10 VALUE=""><a href="javascript:cal1.popup();">Hier</a></td></tr>
      <tr>
      <td valign="top" width="250">Gewünschter&nbsp;Abreisetag</td>
      <td valign="top"><INPUT TYPE="TEXT" NAME="TIS.DateLeave" SIZE=10 VALUE=""></td></tr>
      </table>
      <script language="JavaScript">
      var arr = window.location.search;
      var data = arr.split("&");
      data[0] = data[0].substring(1,data[0].length);
      if(data[0]!=null){window.document.forms[frmLinkPage].elements[0].value=data[0];} if(data[1]!=null){window.document.forms[frmLinkPage].elements[1].value=data[1];}
      </script>
      </body>
      </html>

      Also main.htm greift auch auf das selbe js-file zu wie die Seite davor und in diesem js-file habe ich die Variable frmLinkPage in der der ID des Objektes FORM steht, nämlich frmLinkPage="formular";
      Jedoch nimmt er dies nicht an... da gibt er in FireFox nichts aus und sagt no such FORM oder so was... ????
      Jedoch wenn ich auf den link "Hier" klicke dann macht er das Popup auf!!

      Also ich hoffe es ist jetzt verständlicher! Danke für die Hilfe..

      Gruß melko

      1. Nun ich habe ein Button auf einer Seite das durch den klick darauf auf eine funktion zugreift in meinem js-file...
        Beispiel:
        <input type="button" value="Anfrage senden" class="button" onClick="link()"></input>

        Die Funktion link():

        window.open(linkPage +"?" +window.document.forms[frm].elements[3].value + '&' + window.document.forms[frm].elements[4].value);

        Und das machst du ohne zu prüfen ob document.forms[frm] existiert?

        in der Variable linkPage steht "main.htm"

        Nun nach dem Klick macht er mir main.htm auf... Die sieht folgender Weise aus:

        ...

        <script language="JavaScript">
        var arr = window.location.search;
        var data = arr.split("&");
        data[0] = data[0].substring(1,data[0].length);
        if(data[0]!=null){window.document.forms[frmLinkPage].elements[0].value=data[0];} if(data[1]!=null){window.document.forms[frmLinkPage].elements[1].value=data[1];}

        und hier ebenfalls. Was ist frmLinkPage?
        existiert document.forms[frmLinkPage] oder document.forms[frmLinkPage].elements[1]

        Du solltest so oft wie möglich (am besten immer) prüfen, ob die Objekte die du gedenkst einzusetzen auch wirklich existieren.

        Ich sehe sie zumindest nicht.

        Also main.htm greift auch auf das selbe js-file zu wie die Seite davor und in diesem js-file habe ich die Variable frmLinkPage in der der ID des Objektes FORM steht, nämlich frmLinkPage="formular";
        Jedoch nimmt er dies nicht an... da gibt er in FireFox nichts aus und sagt no such FORM oder so was... ????

        In dem HTML Code gibt es nur ein Formular mit dem Namen 'QueryForm', also kann der Browser auch keine Formular ansprechen mit dem Namen 'formualr'

        Struppi.

        1. window.open(linkPage +"?" +window.document.forms[frm].elements[3].value + '&' + window.document.forms[frm].elements[4].value);

          Und das machst du ohne zu prüfen ob document.forms[frm] existiert?

          ja das existiert... 10000%

          if(data[0]!=null){window.document.forms[frmLinkPage].elements[0].value=data[0];} if(data[1]!=null){window.document.forms[frmLinkPage].elements[1].value=data[1];}

          und hier ebenfalls. Was ist frmLinkPage?
          existiert document.forms[frmLinkPage] oder document.forms[frmLinkPage].elements[1]

          Du solltest so oft wie möglich (am besten immer) prüfen, ob die Objekte die du gedenkst einzusetzen auch wirklich existieren.

          Ich sehe sie zumindest nicht.

          ja OK, aber die Objekte existieren auch 1000% weil ich sie davor anlege... also es sind keine dynamischen Objekte sondern fixe Bestandteile... und frmLinkPage ist eine Variable in calendar.js in der der ID des Objektes FORM steht... (in diesem Fall "formular")

          In dem HTML Code gibt es nur ein Formular mit dem Namen 'QueryForm', also kann der Browser auch keine Formular ansprechen mit dem Namen 'formular'

          ich denke dass getElementById auf die ID des Objektes FORM geht und nicht auf den Namen... da ist der Name egal, oder??

          Gruß melko

          1. window.open(linkPage +"?" +window.document.forms[frm].elements[3].value + '&' + window.document.forms[frm].elements[4].value);

            Und das machst du ohne zu prüfen ob document.forms[frm] existiert?

            ja das existiert... 10000%

            Mit so einer Einstellung wirst du bei der Fehlersuche nicht weiterkommen. Das A&O beim programmieren ist es Werte auf Gültigkeit zu prüfen, wenn du denkst du bist der einzige der das nciht braucht, dann viel Spaß beim Fehler suchen.

            if(data[0]!=null){window.document.forms[frmLinkPage].elements[0].value=data[0];} if(data[1]!=null){window.document.forms[frmLinkPage].elements[1].value=data[1];}

            und hier ebenfalls. Was ist frmLinkPage?
            existiert document.forms[frmLinkPage] oder document.forms[frmLinkPage].elements[1]

            Du solltest so oft wie möglich (am besten immer) prüfen, ob die Objekte die du gedenkst einzusetzen auch wirklich existieren.

            Ich sehe sie zumindest nicht.

            ja OK, aber die Objekte existieren auch 1000% weil ich sie davor anlege... also es sind keine dynamischen Objekte sondern fixe Bestandteile... und frmLinkPage ist eine Variable in calendar.js in der der ID des Objektes FORM steht... (in diesem Fall "formular")

            wie gesagt, du hast anscheinend ein Problem (das nicht so gnaz zu verstehen ist, da maßgebliche Teile des codes noch fehlen), willst aber möglichst nichts überprüfen. So läßt sich dir nicht helfen. weder ist jemand hier in der Lage hellzusehen noch sind wir in der Lage irgendwas zu erraten was bei dir auf der Festplatte liegt. Insofern ist die einzige Möglichkeit für dich, dass du anfängst deinen Code vernünftig zu debuggen.

            In dem HTML Code gibt es nur ein Formular mit dem Namen 'QueryForm', also kann der Browser auch keine Formular ansprechen mit dem Namen 'formular'
            ich denke dass getElementById auf die ID des Objektes FORM geht und nicht auf den Namen... da ist der Name egal, oder??

            Ja ist es, aber du benutzt kein getElementByID in dem von dir gezeigten Code.

            Gruß melko

            Struppi.

            1. Mit so einer Einstellung wirst du bei der Fehlersuche nicht weiterkommen. Das A&O beim programmieren ist es Werte auf Gültigkeit zu prüfen, wenn du denkst du bist der einzige der das nciht braucht, dann viel Spaß beim Fehler suchen.

              Ja ok ich verstehe dich was du damit meinst... und ich habe es auch überprüft und es ist da... also daran kann es sicherlich nicht liegen... ich habe aber gefunden woran es gelegen hat... nämlich an der Funktion selbst... window.open() verlangt 2 Parameter nämlich den link + den Fensternamen wo es geöffnet werden soll, zB "_parent" dann liest er auch die Variablen aus und funktioniert alles bestens...

              wie gesagt, du hast anscheinend ein Problem (das nicht so gnaz zu verstehen ist, da maßgebliche Teile des codes noch fehlen), willst aber möglichst nichts überprüfen. So läßt sich dir nicht helfen. weder ist jemand hier in der Lage hellzusehen noch sind wir in der Lage irgendwas zu erraten was bei dir auf der Festplatte liegt. Insofern ist die einzige Möglichkeit für dich, dass du anfängst deinen Code vernünftig zu debuggen.

              Sorry wenn ich das Problem nicht genauer geschildert habe, ist aber auch schwierig... ich habe es so gut ich es konnte erklärt, anscheinend nicht gut genug...

              Na ja das Problem ist hoffentlich gelöst...

              gruß melko