Script geht nicht im IE, wieso?
Frank
- javascript
0 Klawischnigg0 Frank
0 Struppi
Hi, habe folgendes Script, das ein permanentes Logo oben rechts einblenden soll, also welches beim scrollen an der Stelle bleibt.
Es funktioniert in allen Browsern (ab v4), nur nicht im IE, und ich finde den Fehler einfach nicht. Habe nur hrausfunden, dass die Variable x, die die Position horizontal bestimmt und aktualisiert schon einen falschen Wert hat (zu groß). Dsa Logo wird also eingeblendet, nur wenn ich viel Quertext mache, erscheint es ganz rechts und ist nicht mehr zu sehen. Aber an der Zeile
var x = document.body.clientWidth + document.body.scrollLeft - 89;
kann ich keinen Fehler finden...
Würde mich freuen, wenn jemand weiter weiß!
Vielen Dank und viele Grüße - Frank
<script type="text/javascript" language="javascript">
function init(){
setVisibility("logo", true);
anim();
}
function setVisibility(id, bool){
var ref;
if(document.all){
eval("ref = document.all." + id + ".style");
}
else if(document.layers){
eval("ref = document." + id + "");
}
else if(document.getElementById){
ref = document.getElementById(id).style;
}
if(bool){
ref.visibility = "visible";
}
else{
ref.visibility = "hidden";
}
}
function setPosX(id, n){
if(document.all){
eval("document.all." + id + ".style.posLeft = " + n);
}
else if(document.layers){
eval("document." + id + ".left = " + n);
}
else if(document.getElementById){
document.getElementById(id).style.left = n + "px";
}
}
function setPosY(id, n){
if(document.all){
eval("document.all." + id + ".style.posTop = " + n);
}
else if(document.layers){
eval("document." + id + ".top = " + n);
}
else if(document.getElementById){
document.getElementById(id).style.top = n + "px";
}
}
function anim(e){
if(document.layers){
var x = window.innerWidth + window.pageXOffset - 100;
var y = window.pageYOffset;
}
else if(document.all){
var x = document.body.clientWidth + document.body.scrollLeft - 89;
var y = document.body.scrollTop;
}
else if(document.getElementById){
var x = window.innerWidth + window.pageXOffset - 100;
var y = window.pageYOffset;
}
setPosX("logo", x);
setPosY("logo", y);
setTimeout("anim()", 50);
}
</script>
<style type="text/css">
a{color:#000000; text-decoration:none;}
</style>
</head>
<body onload="init();">
<div id="logo" style=" visibility:hidden;position:absolute;"><a href="#"><img src="LOGO.GIF" border="0" /></a></div>
Hi there,
Hi, habe folgendes Script, das ein permanentes Logo oben rechts einblenden soll, also welches beim scrollen an der Stelle bleibt.
Es funktioniert in allen Browsern (ab v4), nur nicht im IE, und ich finde den Fehler einfach nicht.
Also bei mir funktionierts (IE 6, WIN98SE)
Trotzdem zwei Anmerkungen:
die Browserabfrage mit document.all kannst Du vergessen, da der IE auch die DOM-Syntax versteht, soll heissen, jene Teile des Skripts, in denen document.getElementById vorkommt
Das ganze lässt sich wesentlich einfacher in CSS lösen...
Hi,
das document.all unterstüzt aber doch auch den IE4, getElementById gibts ja erst im 5er. Und den getElementByID-Zweig brauch ich dann für Mozilla und Co ;) ne?
Hast Du einen Ansatz für die CSS-Lösung.
Und ist ja interessant, dass es bei Dir geht, bei mir nicht: IE6, WinXP.
Viele Grüße
PS: Hast Du bei Deinem Testversuch auch genug Text eingefügt, so dass man scrollen muss, weil sonst erscheint das Logo tatsächlich rechts in der Ecke, bewegt sich aber nicht mit.
Hi there,
das document.all unterstüzt aber doch auch den IE4, getElementById gibts ja erst im 5er. Und den getElementByID-Zweig brauch ich dann für Mozilla und Co ;) ne?
Ja, das stimmt. Aber den Browser gibt's nicht mehr, das gleiche trifft eigentlich auf Browser zu, die document.layer verstehen (ist eh nur Netscape 4.xx) Wenn Du Dir für die 0.5 Prozent, die noch diese Browser einsetzen, etwas überlegst, dann kannst Du Dir gleich auch für die 0.05 Prozent etwas überlegen, die javascript abgedreht haben. Dann aber könntest Du gleich jene berücksichtigen, die das Anzeigen von Bildern nicht wollen. (Kann man auch abdrehen). Dann wirst Du aber kein Logo anzeigen können. Was ich damit sagen will: Vergiss es, DOM-fähige Browser reichen....
Hast Du einen Ansatz für die CSS-Lösung.
Gibts hier sicher auch wo, genau weiß ich's von
[link]http://www.drweb.de[/link]
da schau nach unter css-praxis oder tricks oder so...
Und ist ja interessant, dass es bei Dir geht, bei mir nicht: IE6, WinXP.
weiß nicht, ich glaub das servicepack 2 von XP hat defaultmäßig ziemlich viel abgedreht, wie gesagt, kann's nicht überprüfen, ich brauch diesen Mirkosaftsch**** nicht, zum Überprüfen hab ich noch einen Win-Rechner, auf dem 98 läuft...
PS: Hast Du bei Deinem Testversuch auch genug Text eingefügt, so dass man scrollen muss, weil sonst erscheint das Logo tatsächlich rechts in der Ecke, bewegt sich aber nicht mit.
ja, hab ich gemacht ;)
Hi, habe folgendes Script, das ein permanentes Logo oben rechts einblenden soll, also welches beim scrollen an der Stelle bleibt.
Geht mit CSS ganz einfach: position:fixed;
else if(document.all){
var x = document.body.clientWidth + document.body.scrollLeft - 89;
var y = document.body.scrollTop;
Vermutlich ist dein HTML Dokument strict und dann kommen hier im IE 6 falsche Werte raus.
Ich hab das mal so gelöst: http://javascript.jstruebig.de/source/fixlayer.html
Struppi.