document.body.scrollTop funktioniert nicht
Stefan LH
- javascript
0 Struppi
Ich versuche in der folgenden Funktion ein Bild an die Position des Mauszeigers zu binden, was im Firefox auch gut funktioniert. So lange ich im IE nicht gescrollt habe funktioniert es auch dort, scrolle ich aber nach unten ist document.body.scrollTop immer 0, was zur Folge hat, dass das Bild viel zu weit oben angezeigt wird. Ist da ein Fehler drin? :
function mouseMove(evnt) {
isklick=false;
if (drag) {
dragger=document.getElementById("imgdragger");
if (!prepared) {
dragger.style.visibility="visible";
prepared=true;
dragger.src=activepic.src;
}
if (window.netscape && window.screen) {
xMouse=evnt.pageX;
yMouse=evnt.pageY;
} else {
// Microsoft;
xMouse=event.clientX;
yMouse=event.clientY + document.body.scrollTop;
}
//document.getElementById("mousepos").value="Moving: "+xMouse+":"+yMouse+"-"+document.body.scrollTop;
dragger.style.left=(xMouse+5)+"px";
dragger.style.top=(yMouse+5)+"px";
}
return false;
}
Danke, Stefan
...Ist da ein Fehler drin? :
Nicht wirklich, der IE 6 unterscheidet hier zwischen Quirks und standard mode und benutzt jeweils ein andere Element.
Ich benutze dazu die folgende Funktion:
////////////////////////////////////////////////////////////
// Der IE hat 2 verschiedene Objekte für den strict und quirks Mode.
function getBody(w)
{
return (w.document.compatMode && w.document.compatMode == "CSS1Compat") ? w.document.documentElement : w.document.body || null;
}
function mouseMove(evnt) {
isklick=false;
if (drag) {
dragger=document.getElementById("imgdragger");
if (!prepared) {
dragger.style.visibility="visible";
prepared=true;
dragger.src=activepic.src;
}
if (window.netscape && window.screen) {
sinnvollerweise testet du hier auf das was du verwendest, nämlich evnt, da du so nicht unbedingt alle Browser bekommst.
if(evnt)
{
xMouse=evnt.pageX;
yMouse=evnt.pageY;
} else {
// Microsoft;
und hier kommt die obige Funktion zum Einsatz:
var body = getBody(window);
xMouse = window.event.clientX + body.scrollLeft;
yMouse = window.event.clientY + body.scrollTop;
Struppi.