JavaScript läuf mit Netscape 7 nicht mehr!
Buergle
- javascript
Hallo!
Folgendes Script erzeugt Augen, die dem Mauszeiger folgen.
Es läuft mit IE 5, Netscape 4 und bedingt mit Opera.
Leider läuft es mit Netscape 7 nicht mehr!
Kann mir jemand sagen was ich ändern muss?
<SCRIPT LANGUAGE="JavaScript">
var brOK = false, mie = false;
if (document.layers || document.all) brOK = true;
if (document.all) mie = true;
var ex = 0, ey = 0;
var ae, le, re, x0, y0, tid, realx, realy;
function navMove(e) {
ex = e.pageX;
ey = e.pageY;
moveeye()
return routeEvent(e);
}
function mieMove() {
ex = document.body.scrollLeft + event.x;
ey = document.body.scrollTop + event.y;
moveeye();
}
function moveeye() {
dy = ey - y0 - 20;
dx1 = ex - x0 - 20;
dx2 = ex - x0 - 60;
r = Math.sqrt(dx1 * dx1 + dy * dy);
if (r < 20) r = 20;
dx1 = dx1 * 10 / r + x0 + 10;
dy1 = dy * 10 / r + y0 + 10;
r = Math.sqrt(dx2 * dx2 + dy * dy);
if (r < 20) r = 20;
dx2 = dx2 * 10 / r + x0 + 50;
ae.left = x0;
ae.top = y0;
le.left = dx1;
le.top = dy1;
re.left = dx2;
re.top = dy1;
}
function setHandlers() {
if (!mie) {
y0 = document.eyeballs.top;
x0 = document.eyeballs.left;
ae = document.eyeballs;
le = document.lefteye;
re = document.righteye;
window.captureEvents(Event.MOUSEMOVE);
window.onMouseMove = navMove;
}
else {
y0 = document.all.eyeballs.style.pixelTop;
x0 = document.all.eyeballs.style.pixelLeft;
ae = document.all.eyeballs.style;
le = document.all.lefteye.style;
re = document.all.righteye.style;
window.document.onmousemove = mieMove;
}
realx = x0 + 0.1;
realy = y0 + 0.1;
moveall();
}
function moveall() {
rx = realx +20;
ry = realy +20;
rx += (ex - rx) * 0.1;
ry += (ey - ry) * 0.1;
realx = rx - 30;
realy = ry - 30;
x0 = Math.round(realx);
y0 = Math.round(realy);
moveeye();
tid = setTimeout('moveall()', 100);
}
function placeeyes(x, y) {
if (brOK) {
ex = x + 40;
ey = y + 40;
s = '<DIV ID ="dummy" STYLE="position:absolute; ' +'top:'+y+'; left:'+x+'; width:10; height:10;"> </DIV>';
s += '<DIV ID="eyeballs" STYLE="position:absolute; ' +'top:'+y+'; left:'+x+'; width:80; height:40;"><IMG SRC=' +'"gif/whites.gif" border=0 DIV>';
s += '<DIV ID="lefteye" STYLE="position:absolute; ' + 'top:'+(y+10)+'; left:'+(x+10)+'; width:20; height:20;">' +'<IMG SRC="gif/pupil.gif" border=0></DIV>';
s += '<DIV ID="righteye" STYLE="position:absolute; ' +'top:'+(y+10)+'; left:'+(x+50)+'; width:20; height:20;">' +'<IMG SRC="gif/pupil.gif" border=0 DIV>';
document.writeln(s);
}
}
function clearEyes() {
if (tid) clearTimeout(tid);
}
placeeyes(-50,-50);
window.onload = setHandlers;
window.onunload = clearEyes;
</script>
Ich habe leider beobachtet, dass einige derartige Animationen die es im Netz so gibt mit Netscape 7 nicht mehr funktionieren... .
Hi Buergle,
ohe je! Das Script ist uralt, es berücksichtigt noch nicht mal das DOM. Wenn Du es auf neue Browser anpassen willst, mußt Du einiges umschreiben! Und da Du ja noch nicht mal weißt, warum es nicht funktioniert, solltest Du es sein lassen. Vergiss es, such Dir ein neues Script... Oder lese erstmal in selfHTML den Teil über DHTML, dann müßtest Du es eigentlich selbst anpassen können...
Bye,
Danny
Hallo!
Folgendes Script erzeugt Augen, die dem Mauszeiger folgen.
Es läuft mit IE 5, Netscape 4 und bedingt mit Opera.
Leider läuft es mit Netscape 7 nicht mehr!
Kann mir jemand sagen was ich ändern muss?
morgen,
bei ns7 würde ich einen dom-eventhandler einbauen, der ungefähr so ausschaut:
document.getElementsByTagName("Body").addEventListener("mousemove", navMove, true);
bisher hast du nur den 'window.onMouseMove = navMove;' oder den 'window.onMouseMove = navMove;'. den oberen event-listener wür ich noch hinzufügen. zum beispiel mit 'if (document.getElementById)'.
hoffe das bringt dich weiter..
gruss
bjoern
<SCRIPT LANGUAGE="JavaScript">
var brOK = false, mie = false;
if (document.layers || document.all) brOK = true;
if (document.all) mie = true;
var ex = 0, ey = 0;
var ae, le, re, x0, y0, tid, realx, realy;
function navMove(e) {
ex = e.pageX;
ey = e.pageY;
moveeye()
return routeEvent(e);
}
function mieMove() {
ex = document.body.scrollLeft + event.x;
ey = document.body.scrollTop + event.y;
moveeye();
}
function moveeye() {
dy = ey - y0 - 20;
dx1 = ex - x0 - 20;
dx2 = ex - x0 - 60;
r = Math.sqrt(dx1 * dx1 + dy * dy);
if (r < 20) r = 20;
dx1 = dx1 * 10 / r + x0 + 10;
dy1 = dy * 10 / r + y0 + 10;
r = Math.sqrt(dx2 * dx2 + dy * dy);
if (r < 20) r = 20;
dx2 = dx2 * 10 / r + x0 + 50;
ae.left = x0;
ae.top = y0;
le.left = dx1;
le.top = dy1;
re.left = dx2;
re.top = dy1;
}
function setHandlers() {
if (!mie) {
y0 = document.eyeballs.top;
x0 = document.eyeballs.left;
ae = document.eyeballs;
le = document.lefteye;
re = document.righteye;
window.captureEvents(Event.MOUSEMOVE);
window.onMouseMove = navMove;
}
else {
y0 = document.all.eyeballs.style.pixelTop;
x0 = document.all.eyeballs.style.pixelLeft;
ae = document.all.eyeballs.style;
le = document.all.lefteye.style;
re = document.all.righteye.style;
window.document.onmousemove = mieMove;
}
realx = x0 + 0.1;
realy = y0 + 0.1;
moveall();
}
function moveall() {
rx = realx +20;
ry = realy +20;
rx += (ex - rx) * 0.1;
ry += (ey - ry) * 0.1;
realx = rx - 30;
realy = ry - 30;
x0 = Math.round(realx);
y0 = Math.round(realy);
moveeye();
tid = setTimeout('moveall()', 100);
}
function placeeyes(x, y) {
if (brOK) {
ex = x + 40;
ey = y + 40;
s = '<DIV ID ="dummy" STYLE="position:absolute; ' +'top:'+y+'; left:'+x+'; width:10; height:10;"> </DIV>';
s += '<DIV ID="eyeballs" STYLE="position:absolute; ' +'top:'+y+'; left:'+x+'; width:80; height:40;"><IMG SRC=' +'"gif/whites.gif" border=0 DIV>';
s += '<DIV ID="lefteye" STYLE="position:absolute; ' + 'top:'+(y+10)+'; left:'+(x+10)+'; width:20; height:20;">' +'<IMG SRC="gif/pupil.gif" border=0></DIV>';
s += '<DIV ID="righteye" STYLE="position:absolute; ' +'top:'+(y+10)+'; left:'+(x+50)+'; width:20; height:20;">' +'<IMG SRC="gif/pupil.gif" border=0 DIV>';
document.writeln(s);
}
}
function clearEyes() {
if (tid) clearTimeout(tid);
}
placeeyes(-50,-50);
window.onload = setHandlers;
window.onunload = clearEyes;
</script>
Ich habe leider beobachtet, dass einige derartige Animationen die es im Netz so gibt mit Netscape 7 nicht mehr funktionieren... .