Problem Mauszeiger-Koordinaten im div-Tag darzustellen

Hallo

Ich scheitere total bei JavaScript die Mauszeiger-Koords in einem Div-Tag darzustellen.

Kurze Vorab-Info
Da ich es unter Vista nicht hin bekam WinAMP zu nutzen, habe ich MS WebMatix installiert, um auch php-Code lokal prüfen zu können.
Die Seite die mir Probleme bereitet, wird (bzw. wurde) bei lokalem Test im FireFox und MSIE korrekt dargestellt. Mauszeiger-Koords wurden also angezeigt. Die Problem-Seite(n) können angezeigt werden über diesen Link: http://reduit.bplaced.net/Spiele/HdRO/Taten/index.htm.
Im Kopf der Seite sind nur diese Links relevant, da nur bei diesen Links die Problem-Seite (eine php-Datei mit dem JavaScript-Code): "Nordhöhen Trollhöhen Nebelgebirge"aufgerufen wird.

Ein klick auf diese Links läßt im unteren Frame jeweils eine andere Karte eines Spiels anzeigen.
Der JavaScript-Code sollte, wenn man mit der Maus über die Karte fährt, unterhalb der Karte die Koordinaten der Karte anzeigen, aber nicht die Pixel-Koords der Mausposition auf der Abb., sondern die Koords wie sie im Spiel sind, deshalb werden die Koords umgerechnet.

Wie gesagt hatte beim lokalen Test alles einwandfrei funktioniert. Nach dem Hochladen auf den Live-Server konnte weder FireFox noch MSIE die Korrds anzeigen.

Inzw. habe ich fast 3 Stunden mit googlen und allem möglichen hin- und herprobieren mit Tips aus dem Internet verbracht, und nun werden die Koords nicht mal mehr oder falsch lokal angezeigt.

Die Live-Server-Version zeigt im FF in der Fehlerkonsole kein Fehler an, ebenso wird bei MSIE kein Fehler angezeigt und auch das lokale php-Errorlog-File zeigt keinen Fehler.

Ich habe bisher meist rumprobiert mit

  • Nutzung eines anderen DocTypes in der erzeugten Html-Seite
  • Lt. diversen Infos im Internet sollte man bei document.getElementById( “…”).inner HTML besser “.firstChild.data” nutzen. Das funktioniert garnicht, d.h. wenn ich “.firstChild.data” benutze, wird garnichts angezeigt. Mit “.innerHTML” werden die Koords immer mit 0 angezeigt.

Soweit ich durchsteige scheint bei lokalem Test
var xy = getEventOffsetXY (evt);
in der Variablen xy auch ein Wert zu sein, aber wenn ich die Seite hochlade, ist dort immer nur der Wert 0 drin.

Der Live-Zustand der php-Datei entspricht meinen lokalen Zustand und lokal wird die Datei in FF + MSIE korrekt mit Koords angezeigt.

Hier die JavaScript-Funktionen die ich nutze:

function showPos(evt) {
var xy = getEventOffsetXY (evt);
var v1 = Einstellig( ((Map_Height * xy[1]) / 502) + Number(Map_Top) );
var v2 = Einstellig( Map_Width - (( Map_Width * xy[0]) / 870) + Number(Map_Right) );
LogoKoords = "Map-Koordinaten ";
document.getElementById( “xyPos” ).innerHTML = LogoKoords + v1 + "v " + v2 + “h”;
};

function getEventOffsetXY (evt) {
if ( evt.offsetX != null )
return [ evt.offsetX , evt.offsetY ];
var obj = evt.target || evt.srcElement;
setPageTopLeft( obj );
return [ ( evt.clientX - obj.pageLeft ) , ( evt.clientY - obj.pageTop ) ];
};

function setPageTopLeft (o) {
var top = 0,
left = 0,
obj = o;
while ( o.offsetParent ) {
left += o.offsetLeft ;
top += o.offsetTop ;
o = o.offsetParent ;
};
obj.pageTop = top;
obj.pageLeft = left;
};

function clearInfo (evt) { document.getElementById( “xyPos” ).innerHTML = " "; }

Hallo,
bei dem Link den Du gepostet hast ist überhaupt kein JS drin und auch kein Link zu externen JS Dateien. Bist Du sicher daß die hochgeladen Dateien identisch sind mit denen Du lokal arbeitest?

MfG

Der Link, den ich postete, ist eine Html-Seite in der 2 Frames (Kopf-Bereich + unterer Info-Bereich) geladen werden.
Wenn die Seite angezeigt wird, sollte man im Kopf, wie ich schrieb, auf einen der drei genannten Links (z.b. Nebelgebirge) klicken.

Wenn du dann den quellcode sehen willst, gehe mit der Maus irgendwo in den unteren Bereich z.B. mit der Maus auf die angezeigte Karte, dann rechte Maustaste Klicken und…
beim MSIE: “Quelltext anzeigen” klicken.
beim FireFox: “aktueller Frame >> Frame-Quelltext anzeigen” klicken.

Dann solltest du den Inhalt der Html-Datei sehen die vom php-Skript erzeugt wurde.
Und da drin stehen dann u.a. die JavaScript-Sachen drin.

Falls Du immer noch keine Java-Script Code siehst, wäre es gut, wenn Du beschreibst, wie du den Quelltext versuchst anzeigen zulassen, da ich nicht weiß wodurch das Problem verursacht wird.

Ich vermute Du hast im FireFox “Quelltext anzeigen” geklickt und nicht “aktueller Frame >> Frame-Quelltext anzeigen” geklickt.

Den JS-Code würd ich ja gern in eine externe Datei speichern, aber solange da irgendwas fehlerhaft ist, bleibt der JS-Code vorerst in der Html-Seite drin.

Hallo,

ok nun sehe ich den JS code. Ein Problem was ich bisher gesehen habe liegt in der Funktion Einstellig die immer 0 zurückgibt egal wo die MAus ist.

function showPos(evt) 
{
	var xy = getEventOffsetXY (evt);
	console.log("xy + " + xy);
    var v1 = Einstellig( ((Map_Height * xy[1]) / 502) + Number(Map_Top) );
  console.log("v1 = " + v1);
	var v2 = Einstellig( Map_Width - (( Map_Width * xy[0]) / 870) + Number(Map_Right) );
	console.log("v2 = " + v2);
	LogoKoords = "<img src='/img/Koordinaten.gif' align='absmiddle' Border='0' Title='Map-Koordinaten' Alt='Map-Koordinaten'> ";
    document.getElementById( "xyPos" ).innerHTML = LogoKoords +  v1 + "v  " + v2 + "h";
    };

Auszug aus der Firebug Console:

xy = 846,390
v1 = 0
v2 = 0
xy = 828,383
v1 = 0
v2 = 0
xy = 814,373
v1 = 0
v2 = 0
xy = 805,369
v1 = 0
v2 = 0
xy = 803,369
v1 = 0
v2 = 0
xy = 797,366
v1 = 0
v2 = 0

Ich hoffe es hilft Dir etwas weiter.

[quote=“starhunter”]ok nun sehe ich den JS code. Ein Problem was ich bisher gesehen habe liegt in der Funktion Einstellig die immer 0 zurückgibt egal wo die MAus ist.
Ich hoffe es hilft Dir etwas weiter.[/quote]

Sory, aber das hilft mir absolut gar nichts. Evtl. solltest Du nochmal den Start-Post genau lesen. Ich schrieb, das die FireFox- und MSIE-Anzeige zu 100% klappt, wenn ich die Seiten lokal (mittels MS WebMatrix) anzeigen lassen, dann sehe ich die errechneten Werte.

Die jetzige Live-Server Seite ist eine 1 zu 1 Kopie, also 100% identisch mit dem was ich auf der lokalen Platte habe, aber auf dem Live-Server wird immer nur 0 als Wert angezeigt.

MS WebMatrix nutze ich nur, damit ich auch lokal den php-Code prüfen und anzeigen lassen kann, bevor ich Seiten auf den Server ins Internet hochlade.

Zusatz:

Entschuldige bitte vielmals, Dein Hinweis hat doch geholfen! Dankeschön!
Es war ein dusseliger Fehler meinerseits. Um die Koords-Umrechnungen für versch. Karten/Maps zu bewerkstelligen habe ich mir in eine Datei die Werte für jede Karte geschrieben und lese diese per php aus.
Und genau diese Datei fehlte auf dem Server.

Oh man, seit heut morgen sitze ich an diesem blöden Fehler. Manchmal sieht man den Wald vor lauter Bäumen nicht.

Würde es aber, wenn du mal ein bisschen mitdenkst, anstatt nur zu meckern.

Oder du mal, wenn du schon Hinweise hier bekommst, dann auch selber das Problem etwas genauer untersuchen.

Die von starhunter genannte Funktion liefert 0, weil die in den Berechnungen verwendeten Werte 0 bzw. “” sind:

[code][/code]
Ich nehme an, dass dieser JavaScript-Code dynamisch von deinem PHP-Script ausgeben wird(?) - also untersuchst du jetzt vielleicht mal, warum dort keine vernünftigen Werte stehen. (Ich gehe mal davon aus, dass 0 bzw. “” keine solchen sind, denn sonst wären die genannten Berechnungen eher sinnlos.)

Deine JavaScript-Funktionen können so 1:1 identisch sein, wie sie wollen - wenn sie nicht mit den korrekten (Start-)Werten versorgt werden, weil dein serverseitiges Script beim Ermitteln dieser Murks veranstaltet, bekommst du trotzdem unterschiedliche Ergebnisse.
(Zumal die Aussage, dass es „100% identisch“ wäre dann zumindest in Bezug auf den Code, den der Client erhält, gar nicht stimmt. Das hättest du eigentlich auch vorher mal überprüfen können.)

Ich habe nicht gemeckert, sondern nicht verstanden und deshalb geschrieben, das es mir nicht hilft.

Ferner schau dir mal bitte meinen Zusatz an, den ich kurz vor Deinem Post in meinen letzten Post dazu schrieb.

Das Problem ist also gelöst und dieser Thread kann absinken.