Vertikaler Mausverfolger - Probleme im Mozilla

kawaii

Grünschnabel
Hallo zusammen,

es geht um eine Grafik, die die Mausbewegungen auf einer vertikalen Achse, leicht verzögert, verfolgt.

hier erstmal der Code:

Code:
var mausX = 50;
var mausY = 50;

var ie = document.all;
var n6 = document.getElementById;

function init() {
	if(document.captureEvents) {
		document.captureEvents(Event.MOUSEMOVE); 
		}
	document.onmousemove = update;
	verfolgen();
	}

function update(e) {
	if(e) {
		mausX=e.pageX +5;
		mausY=e.pageY;
		}
	else {
		mausX =event.clientX + document.body.scrollLeft+5;
		mausY = event.clientY + document.body.scrollTop;
		}
	}

function verfolgen() {
	else if(ie) {
		document.all.verfolger.style.pixelTop += (mausY -  verfolger.style.pixelTop)/4;
		if(document.all.verfolger.style.pixelTop > 557) {
			document.all.verfolger.style.pixelTop = 557;
			}
		}
	else if(n6) {
		var y = parseInt(document.getElementById('verfolger').style.top);
		document.getElementById('verfolger').style.top = y + (mausY-y)/4+'px';
		//if(parseInt(document.getElementById('verfolger').style.top) > 571) {
		//	parseInt(document.getElementById('verfolger').style.top) = 571;
		//	}
		}
	setTimeout('verfolgen()',100);
	}

Die Funktion init() wird beim Laden des Body ausgeführt. Die Verfolgergrafik befindet sich in einem DIV mit der ID "verfolger". Der verfolger soll der Maus nur bis zu einem festgelegten Wert folgen.

Das klappt im IE alles auch ganz prächtig. Unter Netscape 6.x / Mozilla gibt es aber leider folgendes Problem:

Wenn ich die Limitierung aktiviere (letzte If-Bedingung; im moment auskommentiert), bewegt sich der Verfolger keinen einzigen Pixel mehr. Er soll sich aber eigentlich (wie im IE), wenn der Cursor diesen Wert wieder unterschreitet, erneut in Bewegung setzen.

Ich stehe gerade voll auf der Leitung und finde den Fehler nicht. Kann mir jemand weiterhelfen?

Danke schon mal.

Grüße
kawaii
 
Zuletzt bearbeitet von einem Moderator:
Kann es sein, dass das "verfolger"-<div> bei dir keine "top"-Angabe im style hat.... bei mir geht das nämlich im Mozilla, ist die Angabe jedoch nicht da, passiert nix.
Das erste "else if" in "verfolger()" macht allerdings wenig Sinn... da macht der IE nämlich garnix.
 
Hi fatalus,

mein Div hat "position:absolute" und natürlich auch eine "top" Angabe. das "else if(ie)" ist ein Vertipper bzw. Verpaster meinerseits. Im Originalscript heisst es an der Stelle natürlich nur "if(ie)".

Das Dingens läuft bei dir im Mozilla? Ich habe hier zum testen den Firebird 0.6, aber das dürfte ja auf's Gleiche hinaus laufen. Bei mir geht das Ganze dort nur solange man nicht den Maximalwert erreicht. Ist das der Fall, bewegt sich nix mehr.

Ich poste mal den kompletten Quelltext meiner Testseite:

Code:
<html>
<head>
	<title>Verfolgertest</title>
	
<script language="JavaScript">
<!--
var mausX = 50;
var mausY = 50;
var ie = document.all;
var n6 = document.getElementById;

function init() {
	if(document.captureEvents) {
		document.captureEvents(Event.MOUSEMOVE); 
		}
	document.onmousemove = update;
	verfolgen();
	}

function update(e) {
	if(e) {
		mausX=e.pageX +5;
		mausY=e.pageY;
		}
	else {
		mausX =event.clientX + document.body.scrollLeft+5;
		mausY = event.clientY + document.body.scrollTop;
		}
	}

function verfolgen() {
	if(ie) {
		document.all.verfolger.style.pixelTop += (mausY -  verfolger.style.pixelTop)/4;
		if(document.all.verfolger.style.pixelTop > 557) {
			document.all.verfolger.style.pixelTop = 557;
			}
		}
	else if(n6) {
		var y = parseInt(document.getElementById('verfolger').style.top);
		document.getElementById('verfolger').style.top = y + (mausY-y)/4+'px';
		if(parseInt(document.getElementById('verfolger').style.top) > 571) {
			parseInt(document.getElementById('verfolger').style.top) = 571;
			}
		}
	setTimeout('verfolgen()',100);
	}		
//-->
</script>
</head>

<body onload="init();">

<div id="verfolger" style="position:absolute; left:225px; top:138px; width:28px; height:64px; z-index:1"><img src="_images/navi/zeiger.gif" width="27" height="24"></div>

</body>
</html>

Läuft das in der Form wirklich bei dir im Mozilla?

Bei mir nicht. Was hab ich nur verbrochen?

Grüße
kawaii,
immer noch auf dem Schlauch stehend
 
Zuletzt bearbeitet von einem Moderator:
Hi,

tausche einfach diese Zeile:
Code:
parseInt(document.getElementById('verfolger').style.top) = 571;
durch die hier aus:
Code:
document.getElementById('verfolger').style.top = 571;
 
Danke Fabian,

so funktioniert es. (Wieso ist das Wort f-u-n-z-t geblacklistet? Seltsam)

Manchmal sieht man (=ich) den Wald vor lauter Bäumen nicht.

Grüße
kawaii
 

Neue Beiträge

Zurück