Torsten: JavaScript Probs

Hi

Es ist mal wieder so weit... Probleme ueber Probleme.

1.: Ich versuche krampfhaft 2 Frames auf einmal zu aendern.
    (so wie im SelfHTML Beispiel) Allerdings gefaellt mir die Loesung nicht richtig, da
    beide Links mit JS ausgefuehrt werden. Somit geht bei Usern ohne JS nix.

Also habe ich folgendes probiert:

A HREF="xxx.html" onclick="top.main.inhalt.location.href='yyy.html';return true;" target="button"> bvngnfgnv  /A

Das ganze funtioniert nur leider mit dem Target nicht (wenn ich das Target=button weg lasse
gehts (nur leider dann eben im falschen frame)) Scheinbar interpretiert Netscape das
target auch fuer das onclick... irgendwie. mit IE gehts einwandfrei. Netscape meldet auch keine
Fehler. die yyy.html kommt nur nicht wenn das target da steht.

Weiss einer wie ich das target umgehen kann ?? (wobei es eh komisch ist, eigentlich
gebe ich doch den kompletten weg vom top bis zum frame an... seltsam)

2.: In SelfHTML steht das Beispiel zum ueberpruefen von Forms.
    Allerdings steht dabei das es nur mit N3 und IE4 geht. Ich habe alle vorkommenden Befehle
    in SelfHTML nachgeschlagen und es sollte eigentlich auch mit N2 und IE3 gehen!
    Ist es also nur ein Druckfehler oder woran liegt es ??

Vielen Dank
   Torsten

  1. hi!

    1.: Ich versuche krampfhaft 2 Frames auf einmal zu aendern.
        (so wie im SelfHTML Beispiel) Allerdings gefaellt mir die Loesung nicht richtig, da
        beide Links mit JS ausgefuehrt werden. Somit geht bei Usern ohne JS nix.

    Alternativ könntest du ja ein komplett neues Frameset laden, das die Seiten anzeigt, die du angezeigt haben willst.

    bye, Frank!

    1. Alternativ könntest du ja ein komplett neues Frameset laden, das die Seiten anzeigt, die du angezeigt haben willst.

      bye, Frank!

      ..ja das waere noch eine Loesung... leider ist das ganze aber etwas viel aufwand, da ich es fuer
      ein forum brauche. da muesste ich fuer jeden thread ein neues frameset machen.
      Und nen ganzes Stueck laenger zum laden braucht es eben leider auch.

      Die einzige moeglichkeit die ich noch sehe ist einfach in die normal gelinkte datei ein
      onload zu machen, was die 2. seite in das andere frame laedt. das geht auch ganz gut, nur leider
      wird es eben bei jedem link auf diese seite ausgefuehrt...

      Torsten

  2. Hallo,

    A HREF="xxx.html" onclick="top.main.inhalt.location.href='yyy.html';return true;" target="button"> bvngnfgnv  /A
    Das ganze funtioniert nur leider mit dem Target nicht (wenn ich das Target=button weg lasse
    gehts (nur leider dann eben im falschen frame))

    Probier mal, eine Funkltion zu benutzen:
    function der_Link()
    {
    top.main.inhalt.location.href='yyy.html';
    }
    <A HREF="xxx.html" target="button" onclick="der_Link()">

    BTW - hat nichts mit der Frage selbst zu tun:
    Ich empfehle immer, "top" in solchen Faellen lieber nicht zu verwenden, es sei denn, man ist 100%ig sicher, dass man nicht innerhalb eines (fremden) Framesets setckt.

    Christine

    1. Probier mal, eine Funkltion zu benutzen:
      function der_Link()
      {
      top.main.inhalt.location.href='yyy.html';
      }
      <A HREF="xxx.html" target="button" onclick="der_Link()">

      BTW - hat nichts mit der Frage selbst zu tun:
      Ich empfehle immer, "top" in solchen Faellen lieber nicht zu verwenden, es sei denn, man ist 100%ig sicher, dass man nicht innerhalb eines (fremden) Framesets setckt.

      Christine

      Hi!

      Die Sache mit der Funktion geht leider auch nicht :-(
      Das Top muss ich leider verwenden, da ich nicht weiss wie ich sonst in ein untergeordnetes
      frameset kommen kann.
      Wenn meine seite bei anderen im Frame laeuft ist es nur ok wenn es fehler gibt ;-)

      Torsten

      1. Die Sache mit der Funktion geht leider auch nicht :-(

        Also, jetzt habe ich es ausprobiert, war mir zu spanisch :-)
        Es geht, ob mit oder ohne Funktion.
        Ganz einfach das hier:
        <A HREF="xxx.html" onclick="parent.nr2.location.href='yyy.html';return true;" target="nr3"> zwei Neue</A>
        'nr1' und 'nr2' habe ich gerade mal meine Frames genannt, einfaches Frameset mir drei Frames benutzt, vom ersten aus die beiden anderen so geaendert.
        Das ist uebrigens Deine urspruengliche Loesung.
        Kann es sein, dass die Krux woanders liegt?

        Das Top muss ich leider verwenden, da ich nicht weiss wie ich sonst in ein untergeordnetes
        frameset kommen kann.

        Etwas "muessen", weil es nicht anders gibt oder weil man beim besten Willen nichts anderes findet?   Ja.
        Aber etwas "muessen", weil man nichts anderes weiss?   Ist das ein Argument?
        BTW: Schon mehrfach hier von mir erwaehnt: zum Referenzieren ueber Framegrenzen hinweg gibt es was in der FAQ von de.comp.lang.javascript
        http://irb-www.informatik.uni-dortmund.de/~sm/aw/js/faq/

        Wenn meine seite bei anderen im Frame laeuft ist es nur ok wenn es fehler gibt ;-)

        Na, das sehe ich aber anders.
        Du bestrafst damit nicht den Verursacher, Du triffst den Besucher.
        Und ob der dann nicht Dich verantwortlich macht, das ist auch noch nicht so ganz raus.

        Christine

        1. Also, jetzt habe ich es ausprobiert, war mir zu spanisch :-)
          Es geht, ob mit oder ohne Funktion.
          Ganz einfach das hier:
          <A HREF="xxx.html" onclick="parent.nr2.location.href='yyy.html';return true;" target="nr3"> zwei Neue</A>
          'nr1' und 'nr2' habe ich gerade mal meine Frames genannt, einfaches Frameset mir drei Frames benutzt, vom ersten aus die beiden anderen so geaendert.
          Das ist uebrigens Deine urspruengliche Loesung.

          Kann es sein, dass die Krux woanders liegt?

          Das ist gut moeglich!

          a) habe ich es bisher nur auf nem Mac getestet (N4.05) Da scheint eh noch einiges noch etwas
             anders zu laufen... :-(   (mit dem IE4 auf dem Mac funzt es allerdings !)

          b) habe ich nicht ein Frameset mit 3 fenstern sonder 2 Framesets (d.h. ich definiere ersteinmal
             2 frames wobei ich in eines der beiden eine datei mit einem weiteren framset lade)
            daher reicht ein parent auch nicht aus sondern es MUSS ein top sein (weil parent.parent sollte
            wohl nicht gehen)

          ----------------------------------
             |         |                        |
             |         |                        |
              ---------                         |
             |         |                        |
             |         |                        |
              ----------------------------------

          <Frameset COLS="130,*">
          <Frameset ROWS="200,*">
            <Frame SRC="oben_links.html">
            <Frame SRC="unten_links.html">
          </Frameset>
            <Frame SRC="rechtsr.html">
          </Frameset>

          Hier ist mal eine andere Version  mit nur einer datei mit dem frameset.
          Wenn ich nun in oben_links den verweis habe komme ich doch mit dem parent nur in das
          betreffende frameset. (in das eingeschlossene)

          Etwas "muessen", weil es nicht anders gibt oder weil man beim besten Willen nichts anderes findet?   Ja.
          Aber etwas "muessen", weil man nichts anderes weiss?   Ist das ein Argument?

          Ich sehe den Unterschied zwischen:

          Aber etwas "muessen", weil man nichts anderes weiss?
          Aber etwas "muessen", weil man beim besten Willen nichts anderes findet?

          nicht ganz... !?

          BTW: Schon mehrfach hier von mir erwaehnt: zum Referenzieren ueber Framegrenzen hinweg gibt es was in der FAQ von de.comp.lang.javascript
          http://irb-www.informatik.uni-dortmund.de/~sm/aw/js/faq/

          Da habe ich nichts gefunden bis auf eben diese loesung mit parent....

          Na, das sehe ich aber anders.
          Du bestrafst damit nicht den Verursacher, Du triffst den Besucher.
          Und ob der dann nicht Dich verantwortlich macht, das ist auch noch nicht so ganz raus.

          Ich glaube das es JEDEN stoert wenn auf seiner page fehler kommen.
          So auch die Leute die meine Page in ihr Frameset laden. Wenn dort der Fehler kommt
          werde sie es hoffentlich aendern. Wenn nicht werden die Besucher sich wohl an den
          Betreiber der Frameseite wenden. Wenn nicht.... schreiben sie mir hoffentlich eine mail
          und ich kann dem kleinen fiesling mal die meinung geigen.

          Meine loesung ist inzw. einfach mit einem onload in der normal gelinkten page das 2. frame zu
          laden.. so gehts... is aber eben auch nicht 100%.

          Torsten

          1. b) habe ich nicht ein Frameset mit 3 fenstern sonder 2 Framesets (d.h. ich definiere ersteinmal
               2 frames wobei ich in eines der beiden eine datei mit einem weiteren framset lade)
              daher reicht ein parent auch nicht aus

            mein "parent" war ein Beispiel. Ich kannte Deinen genauen Aufbau schliesslich nicht.

            sondern es MUSS ein top sein (weil parent.parent sollte
              wohl nicht gehen)

            Muss nicht "top" sein. :-)
            Ob allerdnigs parent.parent die Loesung ist, kommt auf den konkreten Fall an.
            So ganz kenne ich Deine Struktur naemlich noch immer nicht.
            Du sagst nicht, welche Frames von welchem aus geaendert werden.

            ----------------------------------
               |         |                        |
               |         |                        |
                ---------                         |
               |         |                        |
               |         |                        |
                ----------------------------------

            Und hier ist jetzt noch ein Widerspruch.
            Einmal schreibst Du:

            2 frames wobei ich in eines der beiden eine datei mit einem weiteren framset lade

            Also eine zweite Datei.
            Dann

            <Frameset COLS="130,*">

            »»  <Frameset ROWS="200,*">

            <Frame SRC="oben_links.html">
              <Frame SRC="unten_links.html">

            »»  </Frameset>

            <Frame SRC="rechtsr.html">
            </Frameset>

            Doch nur eine Datei?
            Sorry, aber was nun?

            Ich gehe jetzt ganz einfach mal davon aus, dass es tatsaechlich zwei Dateien sind,
            vom rechten Frame aus die beiden links geaendert werden sollen.
            Deinen Frames gebe ich noch Namen:
            Also etwas so:
            1.Datei:
            <FRAMESET COLS="130,*">
                <FRAME NAME="set" SRC="frameset2.html">
                <FRAME NAME="rechter_Frame" SRC="rechtsr.html">
            </FRAMESET>
            2.Datei (frameset2.html):
            <FRAMESET ROWS="200,*">
                <FRAME NAME="oberer_Frame" SRC="oben_links.html">
                <FRAME NAME="unterer_Frame" SRC="unten_links.html">
            </FRAMESET>

            Dann koennte der Aufruf in rechtsr.html so aussehen:
            <A HREF="xxx.html" onclick="parent.set.oberer_Frame.location.href='yyy.html';return true;" target="unterer_Frame">2 Frames wechseln</A>

            Noch eine andere Konstellation?
            Selber Aufbau, nur sollen jetzt vom Frame oben links aus der rechte und der unten links geaendert werden.
            Dann kann man in oben_links.html schreiben:
            <A HREF="xxx.html" onclick="parent.parent.rechter_Frame.location.href='yyy.html';return true;" target="unterer_Frame">2 Frames wechseln</A>

            Sollte funktionieren (ich hoffe, sind keine Tippfehler drin).

            Ich sehe den Unterschied zwischen:
            Aber etwas "muessen", weil man nichts anderes weiss?
            Aber etwas "muessen", weil man beim besten Willen nichts anderes findet?
            nicht ganz... !?

            Nicht ganz oder gar nicht? :-)
            Die erste Formulierung liest sich fuer mich wie "nicht bemuehen, einen Weg zu finden".
            Hatte ich da was falsch verstanden? Dann bitte ich um Entschuldigung.

            Du bestrafst damit nicht den Verursacher, Du triffst den Besucher.
            Und ob der dann nicht Dich verantwortlich macht, das ist auch noch nicht so ganz raus.
            Ich glaube das es JEDEN stoert wenn auf seiner page fehler kommen.

            Aber sicher doch.

            So auch die Leute die meine Page in ihr Frameset laden. Wenn dort der Fehler kommt
            werde sie es hoffentlich aendern. Wenn nicht werden die Besucher sich wohl an den
            Betreiber der Frameseite wenden. Wenn nicht.... schreiben sie mir hoffentlich eine mail
            und ich kann dem kleinen fiesling mal die meinung geigen.

            Dritte Moeglichkeit: sie schreiben gar nicht, setzen die Seite auf die Liste der nicht wieder zu besuchenden. Ich fuerchte fast, das wird am haeufigsten passieren.

            Meine loesung ist inzw. einfach mit einem onload in der normal gelinkten page das 2. frame zu
            laden.. so gehts... is aber eben auch nicht 100%.

            Das ist die Variante aus der FAQ mit dem "Nachziehen". Die habe ich auch mal benutzt.
            Geht. Ist u.U. gar nicht schlecht. Hat allerdings den Nachteil der Zeitverzoegerung, macht sich bemerkbar, wenn die Seite mit "BODY onload" recht gross ist.
            Statt "BODY onload" geht es uebrigens auch, ganz einfach gleich an den Anfang der Seite ein kleines Script zu setzen, was die zweite Seite hinterherzieht. Hat den Vorteil, dass es sofort abgearbeitet wird.

            Christine

            1. mein "parent" war ein Beispiel. Ich kannte Deinen genauen Aufbau schliesslich nicht.

              Drum hab ichs ja nun auch mal hingeschrieben... also no prob

              Ob allerdnigs parent.parent die Loesung ist, kommt auf den konkreten Fall an.
              So ganz kenne ich Deine Struktur naemlich noch immer nicht.
              Du sagst nicht, welche Frames von welchem aus geaendert werden.

              Meine Frage war in diesem Fall eher so zu verstehen,ob eine waghalsige konstruktion
              wie parent.parent ueberhaupt geht...

              Und hier ist jetzt noch ein Widerspruch.
              Einmal schreibst Du:

              2 frames wobei ich in eines der beiden eine datei mit einem weiteren framset lade
              Also eine zweite Datei.
              Doch nur eine Datei?
              Sorry, aber was nun?

              Das mit der einen Datei war nur ein anderes Beispiel (hatte ich auch so geschrieben).
              Das Prob ist aber das gleiche.

              Ich gehe jetzt ganz einfach mal davon aus, dass es tatsaechlich zwei Dateien sind,
              vom rechten Frame aus die beiden links geaendert werden sollen.
              Deinen Frames gebe ich noch Namen:
              Also etwas so:
              1.Datei:
              <FRAMESET COLS="130,*">
                  <FRAME NAME="set" SRC="frameset2.html">
                  <FRAME NAME="rechter_Frame" SRC="rechtsr.html">
              </FRAMESET>
              2.Datei (frameset2.html):
              <FRAMESET ROWS="200,*">
                  <FRAME NAME="oberer_Frame" SRC="oben_links.html">
                  <FRAME NAME="unterer_Frame" SRC="unten_links.html">
              </FRAMESET>

              Dann koennte der Aufruf in rechtsr.html so aussehen:
              <A HREF="xxx.html" onclick="parent.set.oberer_Frame.location.href='yyy.html';return true;" target="unterer_Frame">2 Frames wechseln</A>

              Das sollte gehen, ist aber nicht das "richtige" problem da man ja nur eine ebene
              bei den framesets hochwechseln muss.

              Selber Aufbau, nur sollen jetzt vom Frame oben links aus der rechte und der unten links geaendert werden.

              Genau das ist das Problem

              Dann kann man in oben_links.html schreiben:
              <A HREF="xxx.html" onclick="parent.parent.rechter_Frame.location.href='yyy.html';return true;" target="unterer_Frame">2 Frames wechseln</A>

              Die Frage ist eben ob das parent.parent geht ?! Werde es Montag mal ausprobieren.
              Danke erstmal dafuer.
              Die Sache mit dem top.set.unterer_frame.location.href=xxxx  ist ja am ende das gleiche, ging
              aber bei N4 aufm Mac bei gleichzeitiger verwendung mit target im link nicht (warum auch immer,
              mit IE4 ging einwandfrei), womit wir vielleicht wieder beim Anfangsprob waeren.
              ...aber ich werde mal probieren ob es mit parent.parent vielleicht geht.

              Die erste Formulierung liest sich fuer mich wie "nicht bemuehen, einen Weg zu finden".

              In anbetracht dessen das ich in diesem forum versuche eine Antwort zu bekommen wuerde
              ich schon denken das ich es versuche....

              Dritte Moeglichkeit: sie schreiben gar nicht, setzen die Seite auf die Liste der nicht wieder zu besuchenden. Ich fuerchte fast, das wird am haeufigsten passieren.

              Aber da meine Seite in dem Fall nur eine Unterseite bei jemanden anderen ist, ist es
              ja auch nicht wirklich meine seite (mit meiner url in der titelleiste)

              Statt "BODY onload" geht es uebrigens auch, ganz einfach gleich an den Anfang der Seite ein kleines Script zu setzen, was die zweite Seite hinterherzieht. Hat den Vorteil, dass es sofort abgearbeitet wird.

              Ja. Das ist eine gute Idee. Danke.

              Torsten

              1. hi christine und torsten,
                irgendwie habt ihr das thema verfehlt, eigentlich sollte doch KEIN javascript verwendet werden,
                naja, egal,
                auf jeden fall wärt ihr in einem chatroom besser aufgehoben ;)
                ciao
                [tarc]

                1. hi christine und torsten,
                  irgendwie habt ihr das thema verfehlt, eigentlich sollte doch KEIN javascript verwendet werden,

                  Wieso ? Ich suche schon eine Loesung die einen Link normal ausfuehrt und einen 2. per JS.

                  naja, egal,
                  auf jeden fall wärt ihr in einem chatroom besser aufgehoben ;)

                  ...das mag sein, aber wo ist der Self HTML chat ? Und sind dort auch so viele Leute die es lesen ?

                  Torsten

                2. hi christine und torsten,
                  auf jeden fall wärt ihr in einem chatroom besser aufgehoben ;)

                  Stop mal bitte.
                  Dieses Forum ist dazu da, denke mir zumindest, ueber Probleme mit HTML&Co. zu reden, ueber rein technische Aspekte "wie macht man das?", aber auch ueber Anischten und Meinungen "was ist sinnvoll?".
                  Genau die beiden Dinge haben wir gerade hier getan.
                  1. ueber die Frage des Ladens von zwei Frames geredet
                  2. ueber Vor- und Nachteile "was passiert beim Benutzer?" bestimmter Varianten nachgedacht.

                  Sollte ich den Sinn dieses Forums falsch verstanden habe, es eher als Hotline gedacht sein:
                  "Frage rein - Antwort raus - Diskussion keine"
                  dann moege man mir das bitte sagen, weil ich mich daran dann wohl nicht mehr beteiligen werde.

                  Christine

                  1. Hallo Christine,

                    Sollte ich den Sinn dieses Forums falsch verstanden habe, es eher als Hotline gedacht sein:

                    Du hast den Sinn des Forums ganz richtig verstanden. Gerade Diskussionen wie dieser Thread sind ja das Spannende daran. Es ist zwar richtig, dasss das urspruengliche Problem - 2 Frames aendern ohne Javascript - bislang nicht geloest wurde, denn onclick= ist auch Javascript. Aber ich verbiete mir hier Postings, die versuchen, interessante, mit viel Einsatz gefuehrte Fachdiskussionen wie diese hier "abzuwuergen"!

                    Viele Gruesse
                      Stefan Muenz

  3. Hallo Torsten

    Also habe ich folgendes probiert:

    A HREF="xxx.html" onclick="top.main.inhalt.location.href='yyy.html';return true;"
    target="button"> bvngnfgnv  /A

    Was du probiert hast kann dein Problem gar nicht lösen. Du versucht eine Lösung zu finden, die kein JavaScript benötigt. Allerdings geht "onClick=XXX" nur dann, wenn JavaScript eingeschaltet ist. Da aber die meisten/meistgenutzten Browser JS verstehen, könntest du das vorhandensein von JS schon auf deiner tartseite überprüfen und nur wenn es da ist die Homepage aufrufen.

    2.: In SelfHTML steht das Beispiel zum ueberpruefen von Forms. [...]

    Da weiß ich nichts. Probiers doch einfach aus!

    Gruß
      Stefan

    1. Was du probiert hast kann dein Problem gar nicht lösen. Du versucht eine Lösung zu finden, die kein JavaScript benötigt. Allerdings geht "onClick=XXX" nur dann, wenn JavaScript eingeschaltet ist. Da aber die meisten/meistgenutzten Browser JS verstehen, könntest du das vorhandensein von JS schon auf deiner tartseite überprüfen und nur wenn es da ist die Homepage aufrufen.

      Das ganze ist ein klein wenig komplizierter...

      Das ganze ist fuer ein Web Forum mit 3 Frames.
      Im oberen sind die Namen der threads (ohne unter-mess), im mittleren sind dann die
      jeweiligen Antworten und unten die mess selbst.

      Wenn ich oben nen thread auswaehle sollen im mittleren die antworten kommen und unten
      die erste Nachricht.

      Somit wuerde es fuer die leute ohne JS auch reichen wenn der komplette thread im mittleren
      frame erscheint. das erscheinen der mess unten ist sozusagen der bonus mit JS.
      Daher wollte ich eben auch den ersten link als href machen und nur das 2. mit JS.

      Die sache mit der JS abfrage auf der Startseite geht so leider auch nicht, da ich dann das
      Forum z.T. 2x fuehren muesste....

      Transistor

  4. Es ist mal wieder so weit... Probleme ueber Probleme.
    1.: Ich versuche krampfhaft 2 Frames auf einmal zu aendern.
        (so wie im SelfHTML Beispiel) Allerdings gefaellt mir die Loesung nicht richtig, da
        beide Links mit JS ausgefuehrt werden. Somit geht bei Usern ohne JS nix.

    Hallo!

    Zum Ändern von 2 Frames verwende ich folgendes Script:

    <head>
    <script language="JavaScript">
    <!--
    function ChangeFrame(URL1,F1)
    {  
    parent.frames[F1].location.href=URL1;
    }
    // -->
    </script>
    </head>

    <body>
    <a href="page1.htm" target="zielframe" onClick="ChangeFrame('page2.htm',X)">Hier klicken</a>
    </body>

    X muß gegen die Framenummer (0-2 bei 3 Frames)getauscht werden.

    Ich bin kein JS-Experte und habe mir das Script irgendwie "zusammengebastelt". Auf alle Fälle funktioniert es mit NS und MS ab 3.0. Bei Besuchern ohne JS wird nur ein Frame geändert.

    Ich hoffe ich konnte helfen.

    Grüße, Harald