"Kleinere" Schwierigkeiten in Netscape
Christian Huff
- dhtml
Hallo! Ich hab folgendes seltsames Problem, es dreht sich um folgendes Objekt:
<DIV CLASS="fliege" ID="drache">
<img src="dragon_rechts.gif" name="flatter">
</DIV>
welches per CSS so definiert ist:
.fliege {position:absolute; top:150; left:2; height:40; width:50; z-index:0; visibility:visible;}
So weit, so gut, wird auch von IE und NN richtig interpretiert... Jetzt soll diese DIV über den Bildschirm wandern, und nachdem es ein Maximum erreicht hat, umdrehen und seine SRC ändern. Aus dem Grund hab ich in JavaScript folgende Functionen geschrieben:
n=1; //das ist der Startwert der X-Koodinate //
da = screen.availWidth - 229; //das ganze findet in einem Frame statt, deshalb Abzug eines Werts//
direk = 1; //das ist die Startrichtung //
browser=navigator.appName;
flatterrechts=new Image();
flatterlinks=new Image();
flatterrechts.src="dragon_rechts.gif";
flatterlinks.src="dragon_links.gif";
function main()
{ if (browser=='Microsoft Internet Explorer')
{
document.all.drache.style.left = n;
richtung();
}
else
{
document.drache.left = n;
richtung();
}
}
function richtung()
{
if (n>da)
{
direk=-1;
links('flatter')
}
if (n<-50)
{
direk=1;
rechts('flatter')
}
bewege(n+direk)
}
function bewege(m)
{ if (browser=='Microsoft Internet Explorer')
{
document.all.drache.style.left = m;
n = m;
window.setTimeout("richtung()",50);
}
else
{
document.drache.left = m;
n = m;
window.setTimeout("richtung()",50)
}
}
function links(bild)
{
linksbild = eval(bild + "links.src");
document[bild].src = linksbild;
}
function rechts(bild)
{
rechtsbild = eval(bild + "rechts.src");
document[bild].src = rechtsbild;
}
Dieser Quelltext führt im Internet Explorer 5 zu korrekter Darstellung, nur im Netscape 4.6 weigert sich das Bild zu wechseln, und hält wegen JavaScriptError auch noch gleich an...
Die Funktionen 'rechts(bild)' und 'links(bild)' funktionieren aber im Netscape, solange das zu wechselde Bild nicht in einer DIV ist...
Ist das eine Schikane von Netscape und muß ich damit leben, oder geht das irgendwie anders? Ich weiß, daß ich <layer> verwenden könnte, was ich aber nicht will!
Unter dem Link kann man sich das ganze mal anschauen...
Christian Huff
Hi erstmal.....
function main()
{ if (browser=='Microsoft Internet Explorer')
einfacher: if (document.all)
document.all.drache.style.left = n;
Fehler1:
style.left is ein String-Wert. Das numerische pendant ist pixelLeft. Richti wäre also der Ausdruck
document.all.drache.style.pixelLeft = n;
document.drache.left = n;
Fehler2: Der Layer muß richtig adressiert werden:
document.layers.drache.left=n oder
document.layers['drache'].left=n
document.all.drache.style.left = m;
Siehe Fehler1
document.drache.left = m;
Siehe Fehler2
Ist das eine Schikane von Netscape und muß ich damit leben, oder geht das irgendwie anders? Ich weiß, daß ich <layer> verwenden könnte, was ich aber nicht will!
Netscape is ne ecke umständlicher als IE4/5, aber wenn man die Syntax richtig beachtet, gehts auch ,-)
Gruß,
Carsten
Vielen Dank, jetzt klappt alles einwandfrei...
Moin Christian,
Die Funktionen 'rechts(bild)' und 'links(bild)' funktionieren aber im Netscape, solange das zu wechselde Bild nicht in einer DIV ist...
Ist das eine Schikane von Netscape und muß ich damit leben, oder geht das irgendwie anders? Ich weiß, daß ich <layer> verwenden könnte, was ich aber nicht will!
Das liegt an der unterschiedlichen Verwaltung von images in <div>'s von IE und Netscape. Ein ausführlicher Beitrag hierzu findet sich im Archiv:
<../../sfarchiv/1999_1/t01931.htm#a8805>
Bis dannundwann...
Andreas
Danke hat mir sehr geholfen... jetzt klappt alles!