Hallo Struppi,
so, jetzt hab ich mich wieder reingefummelt, komme aber imemr noch nicht weiter.
if (document.captureEvents) document.captureEvents(Event.MOUSEOVER)
klappt im IE
und im MZ
genau.
Deshalb habe ich versucht, mithilfe von </archiv/2002/12/31315/> weiterzukommen, aber ich verstehe einfach nicht, was es mit dieser Funktion und deren erstem Parameter auf sich hat. Mit
if(document.implementation.hasFeature("MouseEvents", "2.0"))
kann ich zumindest den Mozilla separat erfassen, aber clientX kennt er immer noch nicht.
[Mozilla]> ... kennt window.event nicht.
exakt das ist mein Problem.
Aufgerufen wird checkPos() aus einer anderen Funktion heraus,
Dann musst du den event noch weiterreichen.
Weiterreichen? Ich hab's jetzt erstmal direkt eingegeben:
document.getElementById('popup').style.left = (checkPos().left - OFFICES[id][3]) + 'px';hier musst du checkPos den event weiterreichen, den du in die Funktion als 1. Parameter bekommst.
da ist sie wieder, die ominöse Funktion ;-) Ich habe das Gefühl, die Welt der Events ist doch noch sehr nebulös für mich. Habe mich etwas eingelesen, aber alle Beispiele scheinen sich sich immer auf das permanente Auslesen von Werten, nicht das punktuelle auf einem bestimmten Event, zu beziehen.
An welcheer Stelle rufst du das obige auf?
Aaalso...
Unabhängig von irgendeiner Funktion führe ich
if (document.captureEvents) document.captureEvent(Event.MOUSEOVER);
aus.
Dann habe ich die Funktion checkPos(), die mir die Werte (bei Aufruf!) zurückgeben soll:
function checkPos() {
tempX = event.clientX + document.body.scrollLeft;
tempY = event.clientY + document.body.scrollTop;
if (tempX < 0){tempX = 0;}
if (tempY < 0){tempY = 0;}
var m_pos = new Object();
m_pos.top = tempY;
m_pos.left = tempX;
return m_pos;
}
Zusätzlich habe ich eine Funktion, die den ganzen Ein-Ausblendkram erledigt und die Inhalte in mein Div schreibt:
(jetzt mal reduziert auf DOM-Browser:)
function showPopup(id) {
document.getElementById('popup').style.display = "block";
[... diverses innerHTML-Gefummele]
document.getElementById('popup').style.left = (checkPos().left - OFFICES[id][3]) + 'px';
document.getElementById('popup').style.top = (checkPos().top - OFFICES[id][4]) + 'px';
}
In den letzten beiden Zeilen wird checkPos() aufgerufen und mit top und left weitergerechnet. showPopup wird im HTML-Code bei mousover über eine imagemap aufgerufen und eine id übergeben.
IE führt aus, weil er event.clientX kennt. Mozilla braucht "diese" Funktion und ihren ersten Parameter. Kann mir noch jemand folgen? Wenn ja, Danke für jede Denkhilfe.
Gruß aus Köln-Ehrenfeld,
Elya
"Alle mal an die Nase fassen, und zwar an die eigene": </archiv/2003/9/57903/#m324482>
_____________
elyas virtuelle Altbauwohnung: http://www.visuelya.de