Tarcon
New member
Hallo JS´ler...
Ich verzweifle gerade an einem Script, von dem ich sicher bin, dass es eigentlich korrekt funktionieren müsste. Irgendwo steckt aber noch immer ein Fehler, den ich einfach nicht finden kann. Sieht jemand von Euch, was ich falsch mache?
Zunächst schildere ich Euch, was das Script tut bzw. tun soll.
Es gibt ein Div im Body-Tag:
Dazu gehört folgender Style:
Das Script soll nun den Layer, wie ein Browsertooltip, an der Mausposition platzieren. Das passiert auch sowohl im IE6/7 als auch im aktuellen Firefox. Das eigentliche Problem ist die Platzierung, wenn der Anzeigebereich größer ist, als das Browserfenster, also z. B. nach unten gescrollt werden muss.
Die Position wird für den IE hier mit clientX ausgelesen. Ich bin mir im Klaren darüber, dass pageX sinnvoller wäre, wenn es denn funktionieren würde. Beim Firefox funktioniert es mit pageX nämlich wunderbar und die Probleme treten ausschließlich mit dem IE auf, in meinem Fall mit der 7er Version.
Nun dache ich, ich lese clientX und clientY aus und addiere einfach document.body.scrollLeft bzw. scrollTop. Leider bleiben diese beiden Werte vollständig leer bzw. undefined, egal wie ich es versuche.
Kann mir jemand helfen? Ich sitze seit 1,5 Tagen da und weiß nicht mehr, wie ich weitermachen soll.
Viele Grüße
Tarcon
Ich verzweifle gerade an einem Script, von dem ich sicher bin, dass es eigentlich korrekt funktionieren müsste. Irgendwo steckt aber noch immer ein Fehler, den ich einfach nicht finden kann. Sieht jemand von Euch, was ich falsch mache?
Zunächst schildere ich Euch, was das Script tut bzw. tun soll.
Es gibt ein Div im Body-Tag:
Code:
<div class="mouseInfoLayer" id="mouseInfoLayer"></div>
Dazu gehört folgender Style:
Code:
.mouseInfoLayer {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
font-weight: normal;
color: #000000;
background-color: #ffffe1;
text-align: left;
width: auto;
border: 1px solid #000000;
position: absolute;
z-index: 250;
height: auto;
padding-top: 5px;
padding-right: 5px;
padding-bottom: 5px;
padding-left: 5px;
visibility: hidden;
}
Das Script soll nun den Layer, wie ein Browsertooltip, an der Mausposition platzieren. Das passiert auch sowohl im IE6/7 als auch im aktuellen Firefox. Das eigentliche Problem ist die Platzierung, wenn der Anzeigebereich größer ist, als das Browserfenster, also z. B. nach unten gescrollt werden muss.
Die Position wird für den IE hier mit clientX ausgelesen. Ich bin mir im Klaren darüber, dass pageX sinnvoller wäre, wenn es denn funktionieren würde. Beim Firefox funktioniert es mit pageX nämlich wunderbar und die Probleme treten ausschließlich mit dem IE auf, in meinem Fall mit der 7er Version.
Nun dache ich, ich lese clientX und clientY aus und addiere einfach document.body.scrollLeft bzw. scrollTop. Leider bleiben diese beiden Werte vollständig leer bzw. undefined, egal wie ich es versuche.
Kann mir jemand helfen? Ich sitze seit 1,5 Tagen da und weiß nicht mehr, wie ich weitermachen soll.
Code:
function init() {
if (window.event) {
if (document.captureEvents){
document.captureEvents(Event.MOUSEMOVE);
} else {
window.captureEvents(Event.MOUSEMOVE);
}
}
document.onmousemove = getXY;
}
init();
function getXY(e) {
mousex = (window.Event) ? e.pageX : event.clientX; //IE-Alternative zu pageX bzw. clientx offSetX/scrollTop/Left
mousey = (window.Event) ? e.pageY : event.clientY;
}
function init() {
if (window.event) {
if (document.captureEvents){
document.captureEvents(Event.MOUSEMOVE);
} else {
window.captureEvents(Event.MOUSEMOVE);
}
}
document.onmousemove = getXY;
}
function createInfo(layerContent) {
document.getElementById('mouseInfoLayer').innerHTML=layerContent;
document.getElementById('mouseInfoLayer').style.left = mousex+15+'px';
document.getElementById('mouseInfoLayer').style.top = mousey+'px';
document.getElementById('mouseInfoLayer').style.visibility = 'visible';
}
function closeInfo() {
document.getElementById('mouseInfoLayer').innerHTML='';
document.getElementById('mouseInfoLayer').style.visibility = 'hidden';
}
Viele Grüße
Tarcon