Layer und netscape 4
Robert
- javascript
0 alsowiebitte0 Charlie0 Danny0 Cyx230 Robert
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
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
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;
}
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.
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
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
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
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
Vielen dank ich probiere es mal
MFG
Robert
Hallo!
ICh danke es geht und ich weiß auch schon warum:
Wegen dem <!-- --> im script.
Ich danke Vielmals
RObert
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
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