Layers flackern beim MouseOver
Toni Gadza
- dhtml
Hallo Leute,
Ich hoffe hier eine Lösung für mein Problem zu finden.
Ich habe über mehrere Navigationspunkte einen Layer gezogen der sich beim MouseOver über den Navigationspunkt einblendet und beim MouseOut wieder ausblendet.
Wenn ich aber beim eingeblendeten Layer mit der Maus in den Bereich des Layers fahre fängt er an zu flackern.
Wie kann ich das beheben?
Siehe:
http://www.creafactory.com/kunden/photochemie/frameset_main.htm
Bin für jede Antwort dankbar.
Toni
Hi Toni,
das Problem hierbei ist der Text.
Sobald du mit der Maus über den Text fährst, befindest du dich nicht mehr auf dem Layer, somit schlägt der mouseout an.
Eine Lösung für dieses Problem wäre z.B. dem Text ein eindeutiges Merkmal zu geben (z.B. eine fixe id) und auf diese dann wie folgt zu prüfen:
//Diese Funtion liefert für diverse Browser das sich unter dem Cursor befindliche Object zurück.
function getSrc(){
return (window.event) ? window.event.srcElement : e.currentTarget;}
function checkLayer(){
return (getSrc().id == 'fixe_text_id') ? return false : return true;}
<div name="farbiger_layer" onmouseout="if(checkLayer()) Layer_ausblenden()">
Diese Lösung ist nicht geprüft und nicht vollständig und kann in bestimmten Fällen zu kleinen Unschönheiten führen (sowas wie: 2 Layer leuchten gleichzeitig). Sie kann aber noch dahingehend ausgebaut werden.
Ich hoffe dir geholfen zu haben. :)
Gruß
Jens
Hi Toni Gadza,
Hallo Leute,
Ich hoffe hier eine Lösung für mein Problem zu finden.
Ich habe über mehrere Navigationspunkte einen Layer gezogen der sich beim MouseOver über den Navigationspunkt einblendet und beim MouseOut wieder ausblendet.
Wenn ich aber beim eingeblendeten Layer mit der Maus in den Bereich des Layers fahre fängt er an zu flackern.
Wie kann ich das beheben?
Dein Problem ist das Event-Bubbling.
<>
Belege dein Mouseout mit einem kurzen TimeOut und das Flackern sollte Vergangenheit sein. (onMouseOut="window.setTimeout('funktion()',50);")
Gruß
Kurt
Hi Toni Gadza,
grmpf, Link vergessen... :-/
Dein Problem ist das Event-Bubbling.
http://selfhtml.teamone.de/dhtml/modelle/microsoft.htm#event_bubbling
Belege dein Mouseout mit einem kurzen TimeOut und das Flackern sollte Vergangenheit sein. (onMouseOut="window.setTimeout('funktion()',50);")Gruß
Kurt
Gruß
Kurt
Hallo an euch beide...
Vielen Dank erstmal für eure Lösungsvorschläge.
Ich bin leider nicht allzu gut bewandt im scripting.
Das mit dem Bubble-effekt klingt irgendwie plausibel für mich, wenn ich den Code jedoch am MouseOut anfüge gibt es einen Skriptfehler "Objekt erwartet"
fehlt da noch was?
Und der andere Lösungsvorschlag, mit der Vergabe der TextID.. Ich versteh leider nicht ganz wie ich das bewerkstelligen muss :(
Bin leider kein profi..
Danke für Antwort
:)
Hi Toni,
Ich bin leider nicht allzu gut bewandt im scripting.
Das mit dem Bubble-effekt klingt irgendwie plausibel für mich, wenn ich den Code jedoch am MouseOut anfüge gibt es einen Skriptfehler "Objekt erwartet"
fehlt da noch was?
Ja, eine genaue Fehlerbeschreibung respektive eine Kopie deiner Versuche.
Erraten kann ich ja wohl noch nicht, was da schief läuft bei dir.
Schau dir einfach mal den Quelltext meiner oben verlinkten Seite an, da ist genau auf dieses Problem in den Divs eingegangen worden.
Eventuell kannst du ja aus diesem Anschauungsbeispiel schon einen Fehler bei dir entdecken und reparieren, ansonst poste doch mal ein wenig relevanten Code deiner Versuche.
Und der andere Lösungsvorschlag, mit der Vergabe der TextID.. Ich versteh leider nicht ganz wie ich das bewerkstelligen muss :(
Bin leider kein profi..
Nö, ich auch nicht.
Im Grunde ist in allen Scriptsprachen alles streng logisch aufgebaut, wenn du dir die Mühe machst ein wenig reinzuschnüffeln, wirst du sehr rasch Erfolge verzeichnen können.
Imho halte ich diese Vorgangsweise, ohne mir jetzt den Vorschlag von Jens genauer angesehen zu haben, für die kompliziertere Methode.
Gruß
Kurt