sirluck
03-10-2012, 03:51 AM
This script works perfectly in Internet Explorer. It causes a pair of eyes to follow and draw close to your cursor. It works in Firefox until you scroll (no matter the method), then it begins staying the distance you scrolled away from your cursor.
It can be viewed in action at http://www.kingofspaders.com/paranoia.htm.
Obviously, the scrolling isn't being handled correctly. Does someone know how to fix this?
<script>
var brOK = true, 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.clientX;
ey = e.clientY;
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;
if(!mie){
ae.style.left = x0;
ae.style.top = y0;
le.style.left = dx1;
le.style.top = dy1;
re.style.left = dx2;
re.style.top = dy1;
} else {
ae.left = x0;
ae.top = y0;
le.left = dx1;
le.top = dy1;
re.left = dx2;
re.top = dy1;
}
}
function setHandlers() {
if (!mie) {
y0 = 100;
x0 = 200;
ae = document.getElementById("eyeballs");
le = document.getElementById("lefteye");
re = document.getElementById("righteye");
window.addEventListener('mousemove', navMove, false);
//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 + 40;
ry = realy + 40;
rx += (ex - rx) * 0.1;
ry += (ey - ry) * 0.1;
realx = rx - 40;
realy = ry - 40;
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=' +
'"http://www.parrfunding.com/kingofspaders/images/new/whites.gif" border=0></DIV>';
s += '<DIV ID="lefteye" STYLE="position:absolute; ' +
'top:'+(y+10)+'; left:'+(x+10)+'; width:20; height:20;">' +
'<IMG SRC="http://www.parrfunding.com/kingofspaders/images/new/pupil.gif" border=0></DIV>';
s += '<DIV ID="righteye" STYLE="position:absolute; ' +
'top:'+(y+10)+'; left:'+(x+50)+'; width:20; height:20;">' +
'<IMG SRC="http://www.parrfunding.com/kingofspaders/images/new/pupil.gif" border=0></DIV>';
//document.writeln(s);
var eyeContainer = document.createElement("div");
eyeContainer.setAttribute('id', 'eyeContainer');
document.body.appendChild(eyeContainer);
document.getElementById('eyeContainer').innerHTML = s;
}
}
function clearEyes() {
if (tid) clearTimeout(tid);
}
// End -->
</script>
</head>
<body>
<script>
placeeyes(200, 100);
window.onload = setHandlers;
window.onunload = clearEyes;
</script>
It can be viewed in action at http://www.kingofspaders.com/paranoia.htm.
Obviously, the scrolling isn't being handled correctly. Does someone know how to fix this?
<script>
var brOK = true, 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.clientX;
ey = e.clientY;
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;
if(!mie){
ae.style.left = x0;
ae.style.top = y0;
le.style.left = dx1;
le.style.top = dy1;
re.style.left = dx2;
re.style.top = dy1;
} else {
ae.left = x0;
ae.top = y0;
le.left = dx1;
le.top = dy1;
re.left = dx2;
re.top = dy1;
}
}
function setHandlers() {
if (!mie) {
y0 = 100;
x0 = 200;
ae = document.getElementById("eyeballs");
le = document.getElementById("lefteye");
re = document.getElementById("righteye");
window.addEventListener('mousemove', navMove, false);
//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 + 40;
ry = realy + 40;
rx += (ex - rx) * 0.1;
ry += (ey - ry) * 0.1;
realx = rx - 40;
realy = ry - 40;
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=' +
'"http://www.parrfunding.com/kingofspaders/images/new/whites.gif" border=0></DIV>';
s += '<DIV ID="lefteye" STYLE="position:absolute; ' +
'top:'+(y+10)+'; left:'+(x+10)+'; width:20; height:20;">' +
'<IMG SRC="http://www.parrfunding.com/kingofspaders/images/new/pupil.gif" border=0></DIV>';
s += '<DIV ID="righteye" STYLE="position:absolute; ' +
'top:'+(y+10)+'; left:'+(x+50)+'; width:20; height:20;">' +
'<IMG SRC="http://www.parrfunding.com/kingofspaders/images/new/pupil.gif" border=0></DIV>';
//document.writeln(s);
var eyeContainer = document.createElement("div");
eyeContainer.setAttribute('id', 'eyeContainer');
document.body.appendChild(eyeContainer);
document.getElementById('eyeContainer').innerHTML = s;
}
}
function clearEyes() {
if (tid) clearTimeout(tid);
}
// End -->
</script>
</head>
<body>
<script>
placeeyes(200, 100);
window.onload = setHandlers;
window.onunload = clearEyes;
</script>