Koalo: Netscape-Fehler

Hi,
Kann es sein das Netscape mit
document.getElementsByTagName()/document.getElementsById()
nicht umgehen kann?? Oder was:
http://selfhtml.teamone.de/javascript/objekte/anzeige/htmlelemente_table.htm

IE zeigt es an wie es sein soll
Netscape zeigt nur das "Anfangsprodukt"

Koalo

  1. hi

    Welche Version? Netscape 4 nicht.

    Grüße aus Bleckede

    Kai

    1. hi

      Welche Version? Netscape 4 nicht.

      Netscape, und zwar in der Version 4.79 [en] (Win98; U) (reicht das)

      Bei dir nicht?

      Koalo

      1. hi

        Netscape, und zwar in der Version 4.79 [en] (Win98; U) (reicht das)

        der kann sowas noch nicht. Erst ab Version 6. Ansatzweise wird man über document.layers was erriechen können, aber leider bei weitem nicht alles.

        Grüße asu Bleckede

        Kai

        1. Hi,
          Danke für eure Meldungen.
          Noch zwei Fragen:

          1. »» der kann sowas noch nicht. Erst ab Version 6. Ansatzweise wird man über document.layers was erriechen können, aber leider bei weitem nicht alles.

          Kann mir jemand eine Möglichkeit einer "Weiche" nennen (4 soll Layer benutzen, der Rest mit o.g.)
          Oder hat jemand ne bessere Idee?

          1. document.getElementsById("self").style.visibility = "hidden"
            Ist das richtig, das zeigt mir auch IE an!
            Koalo
          1. Hi,
            Danke für eure Meldungen.
            Noch zwei Fragen:

            1. »» der kann sowas noch nicht. Erst ab Version 6. Ansatzweise wird man über document.layers was erriechen können, aber leider bei weitem nicht alles.

            Kann mir jemand eine Möglichkeit einer "Weiche" nennen (4 soll Layer benutzen, der Rest mit o.g.)

            das kann man direkt in dem JS-Code trennen:

            if(document.getElementById){
             document.getElementsById("self").style.visibility = "hidden";
            }
            else{
             if(document.layers){
              document.self.visible="hide";
            }

            Grüße aus Bleckede

            Kai

            1. Hallo Kai,

              if(document.getElementById){
              document.getElementsById("self").style.visibility = "hidden";
              }
              else{
              if(document.layers){
                document.self.visible="hide";
              }

              statt den NN4 entweder gar nicht zu berücksichtigen, oder umständlich immer mit alter Syntax nach Layer-Modell zu bedienen, sollte diese Variante favorisiert werden:

              <style>
              #slf{position:relative;visibility:visible}
              </style>
              <script>
              if(document.getElementById){
                document.getElementsById("slf").style.visibility = "hidden";
               }
               else{
              if(document.layers){
                document.slf.visibility = "hidden";
               }

              </script>
              <div id=slf>

              Man kann dann die visibility für alle Browser in gleicher Weise "visible" oder "hidden" setzen.

              Grüsse

              Cyx23

          2. Tach

            Kann mir jemand eine Möglichkeit einer "Weiche" nennen (4 soll Layer benutzen, der Rest mit o.g.)

            if (document.layers) ist exklusiv für Netscape 4.

            1. document.getElementsById("self").style.visibility = "hidden"
              Ist das richtig, das zeigt mir auch IE an!

            Ja

            Für Netscape 4: document.layers[layername].visibility = "show"
            bzw. document.layers[layername].visibility = "hide"

            Thomas J.

            1. Hi

              if (document.layers) ist exklusiv für Netscape 4.

              1. document.getElementsById("self").style.visibility = "hidden"
                Ist das richtig, das zeigt mir auch IE an!

              Für Netscape 4: document.layers[layername].visibility = "show"
              bzw. document.layers[layername].visibility = "hide"

              Danke ist ja klar, ich habe mich verschrieben, ich meinte das das auch bei IE einen Fehler verursacht.

              Koalo

              1. Hi

                Nochmal anders, funktioniert bei euch folgender Code?

                <HTML>
                <HEAD>
                <script>
                var kur = 0;
                document.getElementsById("self").style.visibility = "hidden"

                function weg(){
                if (kur == 1){kur=0; document.getElementById("self").style.visibility = "hidden"}
                else if (kur == 0){kur=1; document.getElementById("self").style.visibility = "visible"}
                }
                </script>
                </HEAD>
                <BODY>
                <a onclick="weg()">Self...</a>
                <div Id="self">
                <a target="_blank" href="selfhtml.teamone.de">Selfhtml</a><br>
                <a target="_blank" href="www.selfphp.info">Selfphp</a>
                </div>
                </BODY>
                </HTML>

                Koalo

                1. Hallo,

                  Nochmal anders, funktioniert bei euch folgender Code?

                  document.getElementsById("self").style.visibility = "hidden"

                  zunächst, self ist reserviert, du musst das schon anders nennen.

                  Grüsse

                  Cyx23

                  1. document.getElementsById("self").style.visibility = "hidden"

                    zunächst, self ist reserviert, du musst das schon anders nennen.

                    Danke, geht trotzdem nicht (bei euch?)

                    Koalo

                    1. Hallo,

                      document.getElementsById("self").style.visibility = "hidden"

                      zunächst, self ist reserviert, du musst das schon anders nennen.

                      Danke, geht trotzdem nicht (bei euch?)

                      Koalo

                      mit moz1.1 ja, und IE5-6 wird es wohl auch hinkriegen.

                      Für NN4 muss es etwas anders geschrieben werden.

                      Grüsse

                      Cyx23

                      1. Hallo,

                        document.getElementsById("self").style.visibility = "hidden"

                        zunächst, self ist reserviert, du musst das schon anders nennen.

                        Danke, geht trotzdem nicht (bei euch?)

                        Koalo

                        mit moz1.1 ja,

                        Danke (auch mein Code den ich hier schon aufgeführt habe?)

                        und IE5-6 wird es wohl auch hinkriegen.

                        Hat das wer zum probieren? (auch beim Code)

                        Für NN4 muss es etwas anders geschrieben werden.

                        Das werde ich tun!

                        Koalo

                        1. Hallo,

                          Hat das wer zum probieren? (auch beim Code)

                          <HTML><HEAD>
                          <style>
                          #Xslf{position:relative;visibility:hidden}
                          </style>
                          </HEAD>
                          <BODY>
                          <a onclick="weg()" HREF=#>Self...</a>
                          <div id="Xslf">
                          <a target="_blank" href="selfhtml.teamone.de">Selfhtml</a><br>
                          <a target="_blank" href="www.selfphp.info">Selfphp</a>
                          </div>
                          <script>
                          var kur = 0;
                          function weg(){
                          if(document.layers)dxslf=document.Xslf;
                          else dxslf=document.getElementById('Xslf').style;
                          if (kur == 1){kur=0; dxslf.visibility = "hidden"}
                          else if (kur == 0){kur=1;dxslf.visibility = "visible"}
                          }
                          </script>
                          </HTML>

                          ... da ist jetzt für NN4 eine Unterscheidung drinnen -if(document.layers)-, der Rest sollte dann für IE5, N6 usw. gehen.

                          Grüsse

                          Cyx23

                          1. Hallo,

                            Vielen, Vielen, Vielen, Vielen, Vielen, Vielen,....... Dank.
                            Der Code funktioiert einwandfrei

                            Koalo

                            P.S.: Der Dank gilt auch allen andern, die mit ihren Beiträgen geholfen haben.

                2. Mozilla und Opera tun es, auch wenn der Name "self" nicht empfehlenswert ist.

                  ...

                  <a onclick="weg()">Self...</a>

                  Falls es mit dem IE nicht geht, dann schreibe besser <a href="#" onclick="weg()">Self...</a> wobei statt # auch ein alternativ-Link für javascriptlose Surfer stehen kann (sollte).

                  Thomas J.

            2. Hallo,

              Für Netscape 4: document.layers[layername].visibility = "show"
              bzw. document.layers[layername].visibility = "hide"

              da geht meistens hidden und visible (!)

              Für NN4 soll man auch nicht generell <layer> benutzen, meist ist es besser und schon lange empfohlen <div id=xname> zu verwenden. Wenn im <style> dann #xname{position:... usw. steht ist es meistens besser und kompatibler gelöst! Das Layermodell sollte man natürlich kennen wenn man die divs per JavaScript anspricht, aber wie gesagt, hidden und visible.

              Grüsse

              Cyx23

              1. Tach

                da geht meistens hidden und visible (!)

                Laut Netscape-Syntax muß es "show" und "hide" heißen.

                Thomas J.

                1. Hallo,

                  da geht meistens hidden und visible (!)
                  Laut Netscape-Syntax muß es "show" und "hide" heißen.

                  also nö, es wäre totaler Unfug ausser als "Netscape-Syntax" für spezielle klassische <layer>.

                  Schliesslich ist Netscape soweit wie möglich gegangen, um für NN4 nicht mit <layers> zu arbeiten, sondern den NN4 kompatibel zu CSS zu machen.

                  Falls es wider Erwarten einen sehr frühen N4 geben sollte der hidden und visible nicht hinkriegt, könnte man noch drüber nachdenken, wüsste da aber keine Quellen, und soweit ich erinnere können es alle N4.

                  So sollte man sich freuen, dass es einfacher ist:

                  <style>
                  #Xslf{position:absolute;left:50;top:50;visibility:hidden}
                  </style>

                  Die Eigenschaft visibility des div kann für alle Browser bzw. NN4-IE6 usw. gleich bezeichnet werden, nur die Adresse ist etwas anders, und es schaut schonmal wie CSS aus.

                  Also im Normalfall keine <layer, sondern <div mit üblichen CSS Eigenschaften, und sowieso, aber auch gerade für N4, die styleangaben möglichst im Block oder extern.

                  Oder möchtest du gerne für den NN4 besonders umständlich coden?!!

                  Oder gibt es dazu eine Netscape-Empfehlung aus der Zeit als Netscape klar gesagt hat dass ihr Layer-Modell möglichst nicht zu benutzen ist?

                  Grüsse

                  Cyx23

                  1. Moin

                    also nö, es wäre totaler Unfug ausser als "Netscape-Syntax" für spezielle klassische <layer>.

                    Keinesfalls.
                    Laut http://developer.netscape.com/docs/manuals/communicator/dynhtml/layers33.htm#1008650 heißt es "show" und "hide" (etwas weiter runter scrollen bis zur Tabelle).

                    <style>
                    #Xslf{position:absolute;left:50;top:50;visibility:hidden}
                    </style>

                    Das versteht Netscape auch nur, weil der JSSS-Parser die Angabe "hidden" in die Netscape-eigene Syntax übersetzt. Außerdem geht es hier eher darum, positionierte Bereiche mit Javascript anzusprechen. Da es dazu sowieso einer gesonderten Netscape-Version bedarf, kann man auch gleich korrekt "show" und "hide" schreiben.

                    Thomas J.

                    1. Moin Moin,

                      also nö, es wäre totaler Unfug ausser als "Netscape-Syntax" für spezielle klassische <layer>.

                      Keinesfalls.
                      Laut http://developer.netscape.com/docs/manuals/communicator/dynhtml/layers33.htm#1008650 heißt es "show" und "hide" (etwas weiter runter scrollen bis zur Tabelle).

                      weiss ich, kenn ich, in http://developer.netscape.com/docs/manuals/js/client/jsref/layer.htm#1193826 steht es ähnlich.

                      Interessiert mich aber erstmal nicht.

                      <style>
                      #Xslf{position:absolute;left:50;top:50;visibility:hidden}
                      </style>

                      Das versteht Netscape auch nur, weil der JSSS-Parser die Angabe "hidden" in die Netscape-eigene Syntax übersetzt.

                      eben, es funktioniert, und das offenbar zuverlässig.

                      Außerdem geht es hier eher darum, positionierte Bereiche mit Javascript anzusprechen. Da es dazu sowieso einer gesonderten Netscape-Version bedarf, kann man auch gleich korrekt "show" und "hide" schreiben.

                      den versteh ich überhaupt nicht, was bitte ist eine "gesonderten Netscape-Version" ? Sollte es mit 4.01 nicht klappen?
                      #Xslf{position:absolute;left:50;top:50;visibility:hidden} in Verbindung mit einem div ist für Netscape 4-7 wie auch Opera und IE sauber und funktionsfähig.
                      Solange Netscape 4 mitspielt kann ich also vernünftig coden, was ja wohl klar den Vorrang hat.
                      Auch die Performance wird durch eine Übersetzung des Parsers nicht leiden, und wenn würde man es in Kauf nehmen.

                      Was soll das Wort korrekt? Kommt ja in dem Zusamammenhang wohl ein paar Jahre zu spät.

                      Netscape 4 versteht "korrekteres" und konformeres Script und CSS, und das zählt heute mehr denn je.

                      Da sollte man hier nicht zu umständlichem Coden verleiten, und als nächstes wird wieder behauptet wie bescheuert angeblich alle möglichen Sachen beim NN 4 sind. Sicher, z.B. die einfachste Lösung des Resizebug onResize=self.reload() oder so ginge nicht für 4.5, aber selbst das könnte man vernachlässigen wenn 99% der N4-user den 4.7-8 hätten.

                      In http://developer.netscape.com/viewsource/goodman_cross/goodman_cross.htm steht u.a.:

                      "But if you write cross-browser DHTML, you may currently regard the Navigator Layer object as a necessary evil. Navigator 4's occasionally ill-tempered treatment of
                      positioned DIV elements sometimes requires that you write branching code to generate a <LAYER> tag instead."

                      Es gab noch mehr und deutlichere Quellen zur Vermeidung von layern und Co beim NN-4, die aber im neuen Archiv nicht mehr zugänglich sind.

                      Es braucht aber eigentlich auch nur etwas gesunden Menschenverstand um divs möglichst einheitlich anzusprechen.

                      Grüsse

                      Cyx23

                      1. Tach

                        den versteh ich überhaupt nicht, was bitte ist eine "gesonderten Netscape-Version"

                        Stimmt, Du verstehst es nicht.

                        Hier geht es nicht darum, einen Div zu positionieren, sondern diesen per Javascript ein- und auszublenden.
                        Da Netscape weder document.all noch document.getElementById versteht, muß man für Netscape 4.x eben noch eine Extraversion schreiben. Und dabei ist es eben auch sinnvoll, die Netscapesyntax "show" und "hide" zu verwenden.

                        Thomas J.

                        1. N'abend,

                          Hier geht es nicht darum, einen Div zu positionieren, sondern diesen per Javascript ein- und auszublenden.

                          den versteh ich besser noch weniger, denn ich positioniere primär keine Div.

                          Im Beispiel ging es auch gar nicht darum.

                          Es geht vielmehr darum, per CSS einen Div so zu definieren dass er für NN-4 vorhanden ist, ohne das Layermodell zu verwenden.

                          Das geht sauber mit {position:, möglichst im separaten <style>.

                          Nochmal: mit dem Schema #id{position: hat NN4 ein ansprechbares div.

                          Also <style>#xslf{position:relative;top:0,left:0 o.ä., um den <div id=..> für NN-4 ansprechbar, vorhanden zu machen.

                          Und das mit ordentlichem CSS. Und ohne <layer> oder ilayer.

                          Dann kann ich die visibility mit hiddden usw. gleich festlegen oder später per JavaScript ansprechen.

                          .. muß man für Netscape 4.x eben noch eine Extraversion schreiben. Und dabei ist es eben auch sinnvoll, die Netscapesyntax "show" und "hide" zu verwenden.

                          sinnvoll eben nicht, und eine Extrawurst reicht.

                          if(document.layers)dxslf=document.xslf; else dxslf=document.getElementById('xslf').style;

                          so kurz ist die Extrawurst.

                          Jetzt geht für _alle_ (ausser IE4, aber da kann oben rein if(document.all)dxslf=document.all.....):

                          dxslf.visibility = "hidden"
                          dxslf.visibility = "visible"

                          Und da du anfangs von Positionieren geposted hast, geht dann natürlich ähnlich.

                          Grüsse

                          Cyx23

      2. Hi,

        da mußt Du was verwechselt haben...

        NS 4.x kennt weder "document.getElementsByTagName()" noch "document.getElementsById()"... Das ist DOM-Syntax und wird erst ab Version 6 unterstüzt.

        Gruß,

        Danny