Lutz T.: Verzweifelung pur!

Beitrag lesen

Jetzt käuft allerdings das Menü nicht mit!

Na, dann war das eine Abfrage zuviel, ersetze jetzt den letzten Vorschlag:

if(IE) {
  if (document.body) {
    if (document.body.scrollTop) diffY = document.body.scrollTop;
    if (document.body.scrollLeft) diffX = document.body.scrollLeft;
  }
}

durch folgendes:

if(IE) {
  if (document.body) {
     diffY = document.body.scrollTop;
     diffX = document.body.scrollLeft;
  }
}

Dann schuen wir wieder.

MfG
Hartmut R.

Hallo,

ich hab mir mal den Code angeguckt,
ich weiß jetzt nicht, mit welcher IE-Version das ursprüngliche Problem auftrat (vor der ersten Änderung), aber so wie es jetzt ist geht es nicht:
1. würdest Du mit jedem Browser außer IE und Netscape 4 einen Javascriptfehler bekommen, wegen folgendem:

NS = (document.layers) ? 1 : 0;
IE = (document.all) ? 1: 0;

function heartBeat() {

if(IE) {
       if (document.body) {
        if (document.body.scrollTop) diffY = document.body.scrollTop;
        if (document.body.scrollLeft) diffX = document.body.scrollLeft;
            }
        }
            if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }

if(diffY != lastScrollY) {
                        percent = .1 * (diffY - lastScrollY);
                        if(percent > 0) percent = Math.ceil(percent);
                        else percent = Math.floor(percent);
                                        if(IE) document.all.slide.style.pixelTop += percent;
                                        if(NS) document.slide.top += percent;
                        lastScrollY = lastScrollY + percent;
            }
                if(diffX != lastScrollX) {
                        percent = .1 * (diffX - lastScrollX);
                        if(percent > 0) percent = Math.ceil(percent);
                        else percent = Math.floor(percent);
                        if(IE) document.all.slide.style.pixelLeft += percent;
                        if(NS) document.slide.left += percent;
                        lastScrollX = lastScrollX + percent;
                }
        }

Die Variable diffY ist z.B. nur für IE und Netscape 4 definiert (wenn es dann mal funktioniert), die Abfrage
if(diffY != lastScrollY)
wird aber mit allen Browsern gemacht, so daß die dann mit einem Script-Error abpfeffern.

Mußt Du also vorneweg alle Variablen initialisieren, z.B. mit
var diffY=0; dann sollte nix schlimmes passieren, auch wenn jemand mit einem anderen Browser kommt.

Die letzte Änderung mit if (document.body.scrollLeft) und if (document.body.scrollTop) geht deshalb nicht, weil die Werte am Anfang 0 sind, was das selbe ist wie false, also mach das mal wieder raus, dann können wir weitersehn.

Gruß, Lutz.