Robert: Layer und netscape 4

Hallo Alle!

Könnt ihr mir erklären warum dieser Code einen Fehler enthählt?

Das Problem ist er geht nicht bei Netscape 4:

Code:

var i=20;
var gehe = "runter";
function geh()
{
if(document.all)
{
document.all["oben"].style.top=i;
}
if(document.layers)
{
document.layers["oben"].top = i;
}
if(gehe=="runter")
{
i++;
}
if(gehe=="rauf")
{
i--;
}
if(i==400)
{
gehe="rauf";
}
if(i==20)
{
gehe="runter";
}
}

<body onload="setInterval('geh()','20')">

<div id="oben" style="position:absolute;">

<table align="center" cellspacing=0 cellpadding=0  border=0 bgColor=black><tr><td>
<table cellspacing=1 cellpadding=10  border=0 bgColor=black>
<tr>
<td align=center bgColor=#b7b7b7 width=550>
<i>Dieser Layer geht auch in Netscape 4</i>
</td>
</tr>
</table>
</td>
</tr>
</table>

</div>

Naja in allen fällen geht das document.layers["oben"].left nur in diesem nicht.
Warum bloß?

Danke fürs Lesen!

Robert

  1. jahallo auch,

    grade habe ich deinposting entdecktund finde es amüsant.

    Das Problem ist er geht nicht bei Netscape 4:

    ja, warumnimmstdu auch so ein Museumsstück, du Unwissender!

    Code:

    hab ich jetzmal verkürzt zu:

    if(document.all)
    if(document.layers)
    if(gehe=="runter")
    if(gehe=="rauf")
    if(i==400)
    if(i==20)

    Dasist zwar nicht schön, funktioniertaber in einigen Browsern, bloß nicht im Netscape 4. Der willnämlich, wenn ich das noch richtig weiß, irgendwo ein "else" haben, jaja.

    <body onload="setInterval('geh()','20')">

    nettund unverbindlich.

    <div id="oben" style="position:absolute;">

    hossa! Jetzt hastdu aufeinmal eine ID vergeben, aber was soll die? Hast duirgendwoandernocheine Bestimmung dafür definitioniert? Netscape 4 steht da bißchen ratlos vor demTeil herumund weiß nicht, was diese ID soll. Und dann ist jabloß "position:absolute" angegeben, aber gar kein Anfangspunkt wie "top:46" oderso ... warum sollerdawas anzeigen, was keine Startkoordinatenhat? Netscape 4 kanneben nurganzganzganzganz wenig CSS. Stell ihnins Museum und gehabe dich wohl.

    Warum hast dubeideinem posting jetzt vergessen, zu erzählen, wasdir die Javascriptkonsole für einen Fehlergemeldethat?

    So, jetzt weißt du, wiemanhier eine präzise Frage stellensollte.

    alsowiebitte

  2. if(document.layers)
    {
    document.layers["oben"].top=i;
    }
    if(document.getElementById)
    {
    document.getElementById("oben").style.top=i;
    }
    ####################

    Das Script oben berücksichtigt die Netscapes (4-7), funktioniert aber in den alten MSIEs nicht, da die noch kein DOM verstehen . . .

    Das Script unten berücksichtigt Netscape (4-7) und MSIE (4-7), aber dafür wiederum keinen Opera . . .

    Am Besten Du vergißt die ganzen 4er Versionen und programmierst nur noch mit DOM . . .
    Dann entfallen die ganzen Browser-spezifischen Sperenzchen . . .
    :o)))
    #####################
    if(navigator.appName=="Microsoft Internet Explorer")
    {
    oben.style.top=i;
    }
    if(navigator.appName=="Netscape" && parseInt(navigator.appVersion.charAt(0))<=4)
    {
    document.layers["oben"].top= i;
    }
    if (navigator.appName=="Netscape" && parseInt(navigator.appVersion.charAt(0))>=5)
    {
    document.getElementById("oben").style.top=i;
    }

    1. guten Morgen Charlie,

      lies doch bitte mal in der </faq/> über die formalen Schönheiten eines Forumspostings nach.

      Am Besten Du vergißt die ganzen 4er Versionen und programmierst nur noch mit DOM . . .

      Das ist richtig, aber dein Lösungsansatz ist Unsinn. Wenn man nach DOM-fähigen und Nicht-DOM-fähigen Brwosern differenzieren möchte, reicht ein

      if (document.getElementById()) {
        tu irgendwas Sinnvolles
      } else {
        tu irgendwas anderes weniger Sinnvolles
      }

      völlig aus.

      Grüße aus Berlin

      Christoph S.

  3. Hi,

    Könnt ihr mir erklären warum dieser Code einen Fehler enthählt?

    Ja, weil er veraltet ist.

    Konzentriere Dich auf aktuelle Standards (DOM) und programmiere es so, dass alte Browser das Script einfach ignorieren, wichtige Inhalte aber trotzdem zu sehen sind.

    Gruß
    Danny

  4. Hallo,

    da dein Beispielcode mit Netscape 4 wunderbar funktioniert, ergeben sich erstmal zwei Fragen an Robert:

    Wo ist dein Problem?

    Warum schreibst du "document.layers["oben"].left" während im Beispielscript document.layers["oben"].top auftaucht?

    Grüsse

    Cyx23

    1. So.

      da dein Beispielcode mit Netscape 4 wunderbar funktioniert, ergeben sich erstmal zwei Fragen an Robert.....

      bei mir tut er das nicht

      Warum schreibst du "document.layers["oben"].left" während im Beispielscript document.layers["oben"].top auftaucht?

      da hab ich mich tatsächlich vertippt tut mir leid.

      MFG Robert

      1. Hallo,

        bei mir tut er das nicht

        bei mir schon auf zwei verschiedenen Versionen des NC4.

        Also probier einfach mal (nur) den Code genau so wie er hier steht, und wenns nicht läuft poste mal die Version deines NC.

        <script>
        var i=20;
        var gehe = "runter";
        function geh(){
        if(document.all){ document.all["oben"].style.top=i; }
        if(document.layers){ document.layers["oben"].top = i; }
        if(gehe=="runter"){ i++; }
        if(gehe=="rauf"){ i--; }
        if(i==400) { gehe="rauf"; }
        if(i==20) { gehe="runter";}
        }
        </script>
        <body onload="setInterval('geh()','20')">
        <div id="oben" style="position:absolute;">
        <table align="center" cellspacing=0 cellpadding=0  border=0 bgColor=black><tr><td>
         <table cellspacing=1 cellpadding=10  border=0 bgColor=black>
         <tr><td align=center bgColor=#b7b7b7 width=550><i>
          Dieser Layer geht auch in Netscape 4</i></td>
        </tr></table></td></tr></table>
        </div>

        Grüsse

        Cyx23

        1. Vielen dank ich probiere es mal

          MFG
          Robert

        2. Hallo!

          ICh danke es geht und ich weiß auch schon warum:

          Wegen dem <!-- --> im script.

          Ich danke Vielmals

          RObert

          1. Hallo,

            alles klar.

            Wegen dem <!-- --> im script.

            da fehlen allerdings die //, das vorsorgliche Auskommentieren für alte Browser oder robots sollte so wieder möglich sein:

            <script type="text/javascript"><!--
             var i=20;
             .....

            //--></script>

            Grüsse

            Cyx23

  5. Ich will mich nicht an den Standart halten und nicht weil ich dumm
     bin sonder weil ich eine Seite erstellen will die mit netscape 4 geht und trotzdem tolle features hat ZUM SPASS. DAS IST MEIN ZIEL UND MEIN SPASS dabei.

    OK damit sollte alles geklärt sein zu dem

    Also ALSOWIEBITTE ich habe die Seite wie du es geraten hast angepasst geht noch immer nicht, es wird der fehler can't convert i to an integer ausgegeben.

    RObert