Hallo!
Ich arbeite zur Zeit an einer Seite, die eine horizontale Kartei-reiter-Navigation enthält. Der User rollt über einen Punkt, darunter erscheint dann ein Layer mit weiteren Unterpunkten. Klappte soweit wunderbar. Nun war es so, dass allerdings die Unterpunkte immer dann stehen blieben, wenn der User die Navigation nach oben bzw. links und rechts verliess.
Ich dachte mir folgendes: Mausposition auslesen (die Navigation genau wie die Unterpunkt-Navi ist im Div absolut positioniert, damit lässt sich ja gut weiterarbeiten) und dann wenn maus_x kleiner bzw. größer als ein bestimmter wert ist --> layer mit Unterpunkten wieder ausblenden. Das Gleiche mit y für oben.
Folgendes Skript tut genau das (hab ich im Netz gefunden und adaptiert):
// find out if ie runs in quirks mode
var docEl = (
typeof document.compatMode != "undefined" &&
document.compatMode != "BackCompat"
)? "documentElement" : "body";
// register event
// capture it for nc 4x (ok it's a dino)
function init_mousemove() {
if(document.layers) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = dpl_mouse_pos;
}
function dpl_mouse_pos(e) {
// position where mousemove fired
var xPos = e? e.pageX : window.event.x;
var yPos = e? e.pageY : window.event.y;
// for ie add scroll position
if (document.all && !document.captureEvents) {
xPos += document[docEl].scrollTop;
yPos += document[docEl].scrollTop;
}
// display position
//document.feld.ausg.value = "Left = " + xPos + " : Top = " + yPos;
if (xPos<190){
MM_showHideLayers('geld_konto','','hide');
};
if (xPos>670){
MM_showHideLayers('sparen','','hide');
};
if (yPos<80){
MM_showHideLayers('vorsorge','','hide'); MM_showHideLayers('ratgeber','','hide');MM_showHideLayers('sparen','','hide');MM_showHideLayers('gel d_konto','','hide');
};
// for the dino pass event
if (document.layers) routeEvent(e);
}
Dieses Skript wird onload aufgerufen.
Ansich nicht schlecht, funktioniert im Prinzip auch im IE, Firefox, Netscape und Opera. ABER: In allen ausser IE bleibt das Layer mit den Unterpunkten ruhig stehen, der User kann wählen, super! Im IE allerdings flackert das div, wenn man mit der Maus drüberfährt, so als ob es sich immerzu neu lädt (was es natürlich nicht soll). Ich habe schon herausgefunden, dass es an diesem und nur an diesem Skript liegt, aber wo dort und wie kann ich das Problem beheben? Und warum nur im IE (sch***-browser)?
Ich hoffe, ihr könnt mir helfen.
Vielen Dank schonmal im Voraus!
Melanie :-)