Master_of_Magic: "Event is not defined" bei Firefox

Ich hab ein Script von DynamicDrive auf meiner Seite, dass eine analoge Uhr neben dem Mauszeiger anzeigt. Das geht auch alles einwandfrei im IE. In Firefox bekomme ich jedoch die Fehlermeldung "Event is not defined" in Zeile 195. Ich weiß, dass das Skript nicht für Firefox geeignet ist, da dieser die Events irgendwie anders verarbeitet. Aber kann mir einer helfen, wie ich das zum laufen bekomme?

Hier mal das ganze Skript (Zeile 195 ist gekennzeichnet):

//Clock script
if(clockenabled != "0") {
dCol='0080FF' //'FF00FF';date colour.
fCol='00FF00' //'FF00FF';face colour.
sCol='FF0000' //'FF0000';seconds colour.
mCol='FF8000' //'00FF00';minutes colour.
hCol='FFFF00' //'0000FF';hours colour.
ClockHeight=40;
ClockWidth=40;
ClockFromMouseY=0;
ClockFromMouseX=100;

//Alter nothing below! Alignments will be lost!

d=new Array("SONNTAG","MONTAG","DIENSTAG","MITTWOCH","DONNERSTAG","FREITAG","SAMSTAG");
m=new Array("JANUAR","FEBRUAR","MÄRZ","APRIL","MAI","JUNI","JULI","AUGUST","SEPTEMBER","OKTOBER","NOVEMBER","DEZEMBER");
date=new Date();
day=date.getDate();
year=date.getYear();
if (year < 2000) year=year+1900;
TodaysDate=" "+d[date.getDay()]+" "+day+" "+m[date.getMonth()]+" "+year;
D=TodaysDate.split('');
H='...';
H=H.split('');
M='....';
M=M.split('');
S='.....';
S=S.split('');
Face='1 2 3 4 5 6 7 8 9 10 11 12';
font='Arial';
size=1;
if(delay != "1") speed = parseFloat("0." + String(delay));
 else speed = 1;
ns=(document.layers);
ie=(document.all);
Face=Face.split(' ');
n=Face.length;
a=size*10;
ymouse=0;
xmouse=0;
scrll=0;
props="<font face="+font+" size="+size+" color="+fCol+"><B>";
props2="<font face="+font+" size="+size+" color="+dCol+"><B>";
Split=360/n;
Dsplit=360/D.length;
HandHeight=ClockHeight/4.5
HandWidth=ClockWidth/4.5
HandY=-7;
HandX=-2.5;
scrll=0;
if(cspeed != "1") step = parseFloat("0.0" + String(cspeed));
else step = 0.1;
currStep=0;
y=new Array();x=new Array();Y=new Array();X=new Array();
for (i=0; i < n; i++){y[i]=0;x[i]=0;Y[i]=0;X[i]=0}
Dy=new Array();Dx=new Array();DY=new Array();DX=new Array();
for (i=0; i < D.length; i++){Dy[i]=0;Dx[i]=0;DY[i]=0;DX[i]=0}
if (ns){
for (i=0; i < D.length; i++)
document.write('<layer name="nsDate'+i+'" top=0 left=0 height='+a+' width='+a+'><center>'+props2+D[i]+'</font></center></layer>');
for (i=0; i < n; i++)
document.write('<layer name="nsFace'+i+'" top=0 left=0 height='+a+' width='+a+'><center>'+props+Face[i]+'</font></center></layer>');
for (i=0; i < S.length; i++)
document.write('<layer name=nsSeconds'+i+' top=0 left=0 width=15 height=15><font face=Arial size=3 color='+sCol+'><center><b>'+S[i]+'</b></center></font></layer>');
for (i=0; i < M.length; i++)
document.write('<layer name=nsMinutes'+i+' top=0 left=0 width=15 height=15><font face=Arial size=3 color='+mCol+'><center><b>'+M[i]+'</b></center></font></layer>');
for (i=0; i < H.length; i++)
document.write('<layer name=nsHours'+i+' top=0 left=0 width=15 height=15><font face=Arial size=3 color='+hCol+'><center><b>'+H[i]+'</b></center></font></layer>');
}
if (ie){
document.write('<div id="Od" style="position:absolute;top:0px;left:0px"><div style="position:relative">');
for (i=0; i < D.length; i++)
document.write('<div id="ieDate" style="position:absolute;top:0px;left:0;height:'+a+';width:'+a+';text-align:center">'+props2+D[i]+'</B></font></div>');
document.write('</div></div>');
document.write('<div id="Of" style="position:absolute;top:0px;left:0px"><div style="position:relative">');
for (i=0; i < n; i++)
document.write('<div id="ieFace" style="position:absolute;top:0px;left:0;height:'+a+';width:'+a+';text-align:center">'+props+Face[i]+'</B></font></div>');
document.write('</div></div>');
document.write('<div id="Oh" style="position:absolute;top:0px;left:0px"><div style="position:relative">');
for (i=0; i < H.length; i++)
document.write('<div id="ieHours" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+hCol+';text-align:center;font-weight:bold">'+H[i]+'</div>');
document.write('</div></div>');
document.write('<div id="Om" style="position:absolute;top:0px;left:0px"><div style="position:relative">');
for (i=0; i < M.length; i++)
document.write('<div id="ieMinutes" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+mCol+';text-align:center;font-weight:bold">'+M[i]+'</div>');
document.write('</div></div>')
document.write('<div id="Os" style="position:absolute;top:0px;left:0px"><div style="position:relative">');
for (i=0; i < S.length; i++)
document.write('<div id="ieSeconds" style="position:absolute;width:16px;height:16px;font-family:Arial;font-size:16px;color:'+sCol+';text-align:center;font-weight:bold">'+S[i]+'</div>');
document.write('</div></div>')
}
(ns)?window.captureEvents(Event.MOUSEMOVE):0;
function Mouse(evnt){
//#########die folgende Zeile erzeugt den Fehler!!!
ymouse = (ns)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):event.y+ClockFromMouseY;
xmouse = (ns)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX;
}
(ns)?window.onMouseMove=Mouse:document.onmousemove=Mouse;
function ClockAndAssign(){
time = new Date ();
secs = time.getSeconds();
sec = -1.57 + Math.PI * secs/30;
mins = time.getMinutes();
min = -1.57 + Math.PI * mins/30;
hr = time.getHours();
hrs = -1.575 + Math.PI * hr/6+Math.PI*parseInt(time.getMinutes())/360;
if (ie){
Od.style.top=window.document.body.scrollTop;
Of.style.top=window.document.body.scrollTop;
Oh.style.top=window.document.body.scrollTop;
Om.style.top=window.document.body.scrollTop;
Os.style.top=window.document.body.scrollTop;
}
for (i=0; i < n; i++){
 var F=(ns)?document.layers['nsFace'+i]:ieFace[i].style;
 F.top=y[i] + ClockHeight*Math.sin(-1.0471 + i*Split*Math.PI/180)+scrll;
 F.left=x[i] + ClockWidth*Math.cos(-1.0471 + i*Split*Math.PI/180);
 }
for (i=0; i < H.length; i++){
 var HL=(ns)?document.layers['nsHours'+i]:ieHours[i].style;
 HL.top=y[i]+HandY+(i*HandHeight)*Math.sin(hrs)+scrll;
 HL.left=x[i]+HandX+(i*HandWidth)*Math.cos(hrs);
 }
for (i=0; i < M.length; i++){
 var ML=(ns)?document.layers['nsMinutes'+i]:ieMinutes[i].style;
 ML.top=y[i]+HandY+(i*HandHeight)*Math.sin(min)+scrll;
 ML.left=x[i]+HandX+(i*HandWidth)*Math.cos(min);
 }
for (i=0; i < S.length; i++){
 var SL=(ns)?document.layers['nsSeconds'+i]:ieSeconds[i].style;
 SL.top=y[i]+HandY+(i*HandHeight)*Math.sin(sec)+scrll;
 SL.left=x[i]+HandX+(i*HandWidth)*Math.cos(sec);
 }
for (i=0; i < D.length; i++){
 var DL=(ns)?document.layers['nsDate'+i]:ieDate[i].style;
 DL.top=Dy[i] + ClockHeight*1.5*Math.sin(currStep+i*Dsplit*Math.PI/180)+scrll;
 DL.left=Dx[i] + ClockWidth*1.5*Math.cos(currStep+i*Dsplit*Math.PI/180);
 }
currStep-=step;
}
function Delay(){
scrll=(ns)?window.pageYOffset:0;
Dy[0]=Math.round(DY[0]+=((ymouse)-DY[0])*speed);
Dx[0]=Math.round(DX[0]+=((xmouse)-DX[0])*speed);
for (i=1; i < D.length; i++){
Dy[i]=Math.round(DY[i]+=(Dy[i-1]-DY[i])*speed);
Dx[i]=Math.round(DX[i]+=(Dx[i-1]-DX[i])*speed);
}
y[0]=Math.round(Y[0]+=((ymouse)-Y[0])*speed);
x[0]=Math.round(X[0]+=((xmouse)-X[0])*speed);
for (i=1; i < n; i++){
y[i]=Math.round(Y[i]+=(y[i-1]-Y[i])*speed);
x[i]=Math.round(X[i]+=(x[i-1]-X[i])*speed);
}
ClockAndAssign();
setTimeout('Delay()',40);
}

if (ns||ie)window.onload=Delay;
}

kann ich das irgendwie Firefox-kompatibel machen?

  1. ns=(document.layers);
    ie=(document.all);

    Das Problem sind diese Zeilen. Das Skript wurde eigentlich nur für NC 4 und IE 4 geschrieben und müßte bzw. sollte komplett neu geschrieben werden, da es z.b. auch im IE 6 im Standardmode nicht laufen sollte.

    kann ich das irgendwie Firefox-kompatibel machen?

    Theoretisch sicher aber der aufwand es für alle Browser kompatibel zu machen - also neu schreiben - ist wahrscheinlich geringer.

    Struppi.

    1. Das Skript wurde eigentlich nur für NC 4 und IE 4 geschrieben und müßte bzw. sollte komplett neu geschrieben werden, da es z.b. auch im IE 6 im Standardmode nicht laufen sollte.

      Nun, neu schreiben kommt für mich leider nicht in Frage, da ich das fertige Skript ja von einer andere Seite habe und von dem Code selber nur wenig verstehe.
      Gibts dann vielleicht ne Möglichkeit, dass Firefox bei dem Skript ausgeschlossen wird? Wenn die Variablen ie und ns beide false sind, müsste das Skript doch quasi übersprungen werden ...

      1. Nun, neu schreiben kommt für mich leider nicht in Frage, da ich das fertige Skript ja von einer andere Seite habe und von dem Code selber nur wenig verstehe.

        Und es gibt keine Anderen?

        Gibts dann vielleicht ne Möglichkeit, dass Firefox bei dem Skript ausgeschlossen wird? Wenn die Variablen ie und ns beide false sind, müsste das Skript doch quasi übersprungen werden ...

        sind beide bei fast allen Browsern false, ausser IE und Opera, du kannst also quasi alle Browser ausschliessen indem du die folgende Funktionen änderst.:

        function Mouse(evnt){
        //#########die folgende Zeile erzeugt den Fehler!!!
        if(!ns || !ie) return;

        ymouse = (ns)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):event.y+ClockFromMouseY;
        xmouse = (ns)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX;
        }

        function ClockAndAssign(){
        if(!ns || !ie) return;
        ...
        }

        Struppi.

        1. Und es gibt keine Anderen?

          Ich hab bisher kein anderes Skript gefunden, aber vielleicht ändert sich das noch, dann wird das alte ersetzt ^^

          sind beide bei fast allen Browsern false, ausser IE und Opera, du kannst also quasi alle Browser ausschliessen indem du die folgende Funktionen änderst.:

          function Mouse(evnt){
          //#########die folgende Zeile erzeugt den Fehler!!!
          if(!ns || !ie) return;

          »»[...]

          function ClockAndAssign(){
          if(!ns || !ie) return;
          ...
          }

          Wenn ich alle Browser ausschließen wollte, würd ich das Skript entfernen ;-)
          aber ns wird ja durch
          ns=(document.layers);
          definiert. Kann ich das irgenwie anders machen, sodass Netscape erkennt wird, Firefox jedoch false liefert? Weil dann würden ja die kompatiblen Browser das Skript anzeigen und die nicht-kompatiblen würden es überspringen, wenn ich deine Zeilen mit
          if(!ns && !ie) return;
          ersetzen würde...

          1. Wenn ich alle Browser ausschließen wollte, würd ich das Skript entfernen ;-)
            aber ns wird ja durch
            ns=(document.layers);
            definiert.

            Nein, damit wird nur Netscape 4 (wie gesagt das Skript ist eigentlich nur für 4'er entwickelt worden) erkannt.

            Struppi.

            1. @Struppi So, jetzt hab ich doch noch ein Anderes gefunden. Das Alte war laut Website für IE5+ und Opr7+ geeignet. Das neue geht (anscheinend) auf Netscape 7.x/4.x, Mozilla, Firefox und IE 6. Scheint also wesentlich besser angepasst zu sein. Der Code orientiert sich stark am alten:

              var ClockHeight = 40; var ClockWidth = 40; var ClockFromMouseY = 20; var ClockFromMouseX = 80;

              //Alter nothing below! Alignments will be lost!

              var Clock_size = 1; var speed = 0.6;

              var ns4 = (document.layers);

              var ymouse = 0; var xmouse = 0; var scrll = 0;

              var Split; var Dsplit;

              var HandHeight = ClockHeight / 4.5; var HandWidth = ClockWidth / 4.5; var HandY = -7; var HandX = -2.5; var step = 0.06; var currStep = 0;

              var y = new Array(); var x = new Array(); var Y = new Array(); var X = new Array();

              var Dy = new Array(); var Dx = new Array(); var DY = new Array(); var DX = new Array();

              var faceElements = new Array(); var dateElements = new Array(); var hourElements = new Array(); var minuteElements = new Array(); var secondElements = new Array();

              function drawClock() {

              var dayOfWeekNames = ["SUNDAY", "MONDAY",       "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"];   var monthNames = ["JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY",       "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"];

              var date = new Date();   var year = date.getYear();   if (year < 2000)     year = year + 1900;

              var dateRing = " " + dayOfWeekNames[date.getDay()] + " " + date.getDate()                  + " " + monthNames[date.getMonth()] + " " + year;   dateRing = dateRing.split("");   var hoursHand = "...";   hoursHand = hoursHand.split("");   var minutesHand = "....";   minutesHand = minutesHand.split("");   var secondsHand = ".....";   secondsHand = secondsHand.split("");   var faceRing = "1 2 3 4 5 6 7 8 9 10 11 12";   faceRing = faceRing.split(" ");

              var a = Clock_size * 10;   Split = 360 / faceRing.length;   Dsplit = 360 / dateRing.length;

              var i;

              for (i = 0; i < faceRing.length; i++) {     y[i] = 0;     x[i] = 0;     Y[i] = 0;     X[i] = 0;   }   for (i = 0; i < dateRing.length; i++) {     Dy[i] = 0;     Dx[i] = 0;     DY[i] = 0;     DX[i] = 0;   }

              if (document.layers) {

              var props1 = '" top="0" left="0" height="' + a + '" width="' + a             + '"><center><font size="-' + a + '" face="Arial"><b>';     var props2 = '" top="0" left="0" height="16" width="16"><center><font face="Arial"><b>';

              document.write('<div id="funny-clock">');     document.write('<div class="clock-date">');     for (i = 0; i < dateRing.length; i++) {       document.write('<layer name="date-el' + i + props1 + dateRing[i] + '</b></font></center></layer>');       dateElements[i] = document.layers["date-el" + i];     }     document.write('</div><div class="clock-face">');     for (i = 0; i < faceRing.length; i++) {       document.write('<layer name="face-el' + i + props1 + faceRing[i] + '</b></font></center></layer>');       faceElements[i] = document.layers["face-el" + i];     }     document.write('</div><div class="clock-hours">');     for (i = 0; i < hoursHand.length; i++) {       document.write('<layer name="hours-el' + i + props2 + hoursHand[i] + '</b></font></center></layer>');       hourElements[i] = document.layers["hours-el" + i];     }     document.write('</div><div class="clock-minutes">');     for (i = 0; i < minutesHand.length; i++) {       document.write('<layer name="minutes-el' + i + props2 + minutesHand[i] + '</b></font></center></layer>');       minuteElements[i] = document.layers["minutes-el" + i];     }     document.write('</div><div class="clock-seconds">');     for (i = 0; i < secondsHand.length; i++) {       document.write('<layer name="seconds-el' + i + props2 + secondsHand[i] + '</b></font></center></layer>');       secondElements[i] = document.layers["seconds-el" + i];     }     document.write("</div></div>");

              } else {

              var clock = document.createElement("div");     // HTMLElement.id     clock.setAttribute("id", "funny-clock");

              var fixedStyle1 = "position: absolute; top: 0; left: 0";     var fixedStyle2 = "position: absolute; top: 0; left: 0; width: " + a + "px; height: " + a         + "px; text-align: center; font: bold " + a + "px/1 Arial, sans-serif";     var fixedStyle3 = "position: absolute; top: 0; left: 0; width: 16px; height: 16px;"         + " text-align: center; font: bold 16px/1 Arial, sans-serif";

              var clockDate = clock.appendChild(document.createElement("div"));     clockDate.className = "clock-date";     // Opera doesn't parse ElementCSSInlineStyle.style.cssText     // IE doesn't parse HTMLElement.setAttribute("style", ...)     clockDate.setAttribute("style", fixedStyle1);     clockDate.style.cssText = fixedStyle1;     for (i = 0; i < dateRing.length; i++) {       var piece = clockDate.appendChild(document.createElement("span"));       piece.setAttribute("style", fixedStyle2);       piece.style.cssText = fixedStyle2;       // Node.textContent       piece.appendChild(document.createTextNode(dateRing[i]));       dateElements[i] = piece.style;     }

              var clockFace = clock.appendChild(document.createElement("div"));     clockFace.className = "clock-face";     clockFace.setAttribute("style", fixedStyle1);     clockFace.style.cssText = fixedStyle1;     for (i = 0; i < faceRing.length; i++) {       var piece = clockFace.appendChild(document.createElement("span"));       piece.setAttribute("style", fixedStyle2);       piece.style.cssText = fixedStyle2;       piece.appendChild(document.createTextNode(faceRing[i]));       faceElements[i] = piece.style;     }

              var clockHours = clock.appendChild(document.createElement("div"));     clockHours.className = "clock-hours";     clockHours.setAttribute("style", fixedStyle1);     clockHours.style.cssText = fixedStyle1;     for (i = 0; i < hoursHand.length; i++) {       var piece = clockHours.appendChild(document.createElement("span"));       piece.setAttribute("style", fixedStyle3);       piece.style.cssText = fixedStyle3;       piece.appendChild(document.createTextNode(hoursHand[i]));       hourElements[i] = piece.style;     }

              var clockMinutes = clock.appendChild(document.createElement("div"));     clockMinutes.className = "clock-minutes";     clockMinutes.setAttribute("style", fixedStyle1);     clockMinutes.style.cssText = fixedStyle1;     for (i = 0; i < minutesHand.length; i++) {       var piece = clockMinutes.appendChild(document.createElement("span"));       piece.setAttribute("style", fixedStyle3);       piece.style.cssText = fixedStyle3;       piece.appendChild(document.createTextNode(minutesHand[i]));       minuteElements[i] = piece.style;     }

              var clockSeconds = clock.appendChild(document.createElement("div"));     clockSeconds.className = "clock-seconds";     clockSeconds.setAttribute("style", fixedStyle1);     clockSeconds.style.cssText = fixedStyle1;     for (i = 0; i < secondsHand.length; i++) {       var piece = clockSeconds.appendChild(document.createElement("span"));       piece.setAttribute("style", fixedStyle3);       piece.style.cssText = fixedStyle3;       piece.appendChild(document.createTextNode(secondsHand[i]));       secondElements[i] = piece.style;     }

              document.body.appendChild(clock);

              }

              }

              drawClock();

              function followMouse(evt) {   evt = evt || window.event;   //ymouse = (ns)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):event.y+ClockFromMouseY;   //xmouse = (ns)?evnt.pageX+ClockFromMouseX:event.x+ClockFromMouseX;   if (evt.pageY) {     ymouse = evt.pageY;   } else {     ymouse = evt.clientY;     if (window.document.documentElement.scrollTop) {       ymouse += window.document.documentElement.scrollTop;     } else if (window.document.body.scrollTop) {       ymouse += window.document.bosy.scrollTop;     }   }

              if (evt.pageX) {     xmouse = evt.pageX;   } else {     xmouse = evt.clientX;     //if (window.document.documentElement.scrollLeft) {     //  xmouse += window.document.documentElement.scrollLeft;     //} else if (window.document.body.scrollLeft) {     //  xmouse += window.document.body.scrollLeft;     //}   }

              ymouse += ClockFromMouseY;   xmouse += ClockFromMouseX; }

              function ClockAndAssign() {   var time = new Date();   var seconds = -1.57 + Math.PI * time.getSeconds() / 30;   var minutes = -1.57 + Math.PI * time.getMinutes() / 30;   var hours = -1.575 + Math.PI * time.getHours() / 6               + Math.PI * parseInt(time.getMinutes()) / 360;

              var hpos, vpos;

              for (i = 0; i < dateElements.length; i++) {     vpos = Dy[i] + ClockHeight * 1.5 * Math.sin(currStep + i * Dsplit * Math.PI / 180) + scrll;     hpos = Dx[i] + ClockWidth * 1.5 * Math.cos(currStep + i * Dsplit * Math.PI / 180);     dateElements[i].top = "" + vpos + (ns4 ? "" : "px");     dateElements[i].left = "" + hpos + (ns4 ? "" : "px");   }   for (i = 0; i < faceElements.length; i++) {     vpos = y[i] + ClockHeight * Math.sin(-1.0471 + i * Split * Math.PI / 180) + scrll;     hpos = x[i] + ClockWidth * Math.cos(-1.0471 + i * Split * Math.PI / 180);     faceElements[i].top = "" + vpos + (ns4 ? "" : "px");     faceElements[i].left = "" + hpos + (ns4 ? "" : "px");   }   for (i = 0; i < hourElements.length; i++) {     vpos = y[i] + HandY + (i * HandHeight) * Math.sin(hours) + scrll;     hpos = x[i] + HandX + (i * HandWidth) * Math.cos(hours);     hourElements[i].top = "" + vpos + (ns4 ? "" : "px");     hourElements[i].left = "" + hpos + (ns4 ? "" : "px");   }   for (i = 0; i < minuteElements.length; i++) {     vpos = y[i] + HandY + (i * HandHeight) * Math.sin(minutes) + scrll;     hpos = x[i] + HandX + (i * HandWidth) * Math.cos(minutes);     minuteElements[i].top = "" + vpos + (ns4 ? "" : "px");     minuteElements[i].left = "" + hpos + (ns4 ? "" : "px");   }   for (i = 0; i < secondElements.length; i++) {     vpos = y[i] + HandY + (i * HandHeight) * Math.sin(seconds) + scrll;     hpos = x[i] + HandX + (i * HandWidth) * Math.cos(seconds);     secondElements[i].top = "" + vpos + (ns4 ? "" : "px");     secondElements[i].left = "" + hpos + (ns4 ? "" : "px");   }   currStep -= step; }

              function Delay() {   Dy[0] = Math.round(DY[0] += ((ymouse) - DY[0]) * speed);   Dx[0] = Math.round(DX[0] += ((xmouse) - DX[0]) * speed);   for (i = 1; i < Dx.length; i++) {     Dy[i] = Math.round(DY[i] += (Dy[i - 1] - DY[i]) * speed);     Dx[i] = Math.round(DX[i] += (Dx[i - 1] - DX[i]) * speed);   }   y[0] = Math.round(Y[0] += ((ymouse) - Y[0]) * speed);   x[0] = Math.round(X[0] += ((xmouse) - X[0]) * speed);   for (i = 1; i < x.length; i++) {     y[i] = Math.round(Y[i] += (y[i - 1] - Y[i]) * speed);     x[i] = Math.round(X[i] += (x[i - 1] - X[i]) * speed);   }   ClockAndAssign();   setTimeout("Delay()", 20); }

              if (document.addEventListener) {   document.addEventListener("mousemove", followMouse, true); } else if (document.attachEvent) {   document.attachEvent("onmousemove", followMouse); } else if (ns4) {   window.captureEvents(Event.MOUSEMOVE);   window.onMouseMove = followMouse; }

              Delay();

              Mir scheint, da werden sehr viele Element aus dem anderen Skript übernommen, allerdings hab ich irgendwie das Gefühl, dass dieses hier 'überladen' ist. Von der Menge her ist es wesentlich größer als das andere. Liegt das an der besseren Kompatibilität oder was hältst du von dem hier?

              1. So, jetzt hab ich doch noch ein Anderes gefunden. Das Alte war laut Website für IE5+ und Opr7+ geeignet. Das neue geht (anscheinend) auf Netscape 7.x/4.x, Mozilla, Firefox und IE 6. Scheint also wesentlich besser angepasst zu sein. Der Code orientiert sich stark am alten:

                Das alte müßte eigentlich auch im IE 4 arbeiten. Aber egal.

                ...

                var ns4 = (document.layers);

                ...

                Besser!
                Es reicht, wenn man dn unbedingt möchte den NC 4 abzufragen, IE 4 muss nicht (obwohl der teilweise mehr kann, aber die Verbreitung dürfte doch deutlich geringer sein - ich benutzt ihn noch teilweise)

                Mir scheint, da werden sehr viele Element aus dem anderen Skript übernommen, allerdings hab ich irgendwie das Gefühl, dass dieses hier 'überladen' ist. Von der Menge her ist es wesentlich größer als das andere. Liegt das an der besseren Kompatibilität oder was hältst du von dem hier?

                Der Eindruck ist eigentlich gut, es wird eine Einheit für die Positonen verwendet ('px') und es verwendet DOM Methoden die eigentlich alle neueren Browser können. Trotzdem kommt mir die DrawClock Funktion auch etwas aufgeblasen vor und dürfte auch  Probleme bereiten ich würd diese Zeile:
                    document.body.appendChild(clock);

                noch ändern in

                window.onload = function() { document.body.appendChild(clock); };

                Ich bin nicht sicher, ob das document.body Element schon vorhanden ist bevor die Seite zuende geladen wurden (wenn's vorher schon geklappt hat, dann lass es einfach so).

                Struppi.

  2. Hi,

    Ich hab ein Script von DynamicDrive auf meiner Seite, dass eine analoge Uhr neben dem Mauszeiger anzeigt. Das geht auch alles einwandfrei im IE. In Firefox bekomme ich jedoch die Fehlermeldung "Event is not defined" in Zeile 195. Ich weiß, dass das Skript nicht für Firefox geeignet ist, da dieser die Events irgendwie anders verarbeitet. Aber kann mir einer helfen, wie ich das zum laufen bekomme?

    Hier mal das ganze Skript (Zeile 195 ist gekennzeichnet):

    ymouse = (ns)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):event.y+ClockFromMouseY;

    Vorne heißt es evnt (so wie auch der Parameter der Funktion heißt. Hinten event mit einem e mehr …

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. ymouse = (ns)?evnt.pageY+ClockFromMouseY-(window.pageYOffset):event.y+ClockFromMouseY;

      Vorne heißt es evnt (so wie auch der Parameter der Funktion heißt. Hinten event mit einem e mehr …

      Das ist prinzipiell korrekt, evnt ist der event Parameter für Netscape 4, event ist window.event für den IE

      Struppi.