PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : probleme mit <span> overlay und onmouseout


The_Invisible
2007-05-13, 12:36:08
beispiel und code (per quelltext) gibt es hier -> http://ti.dynalias.net/test/jshelp.php

beschreibung:
nach dem klick auf dem "hilfe" button ist man im "help-modus". in diesem modus kann man mit einem linksklick auf ein element dessen hilfe anzeigen lassen, mit einem rechtsklick erscheint ein contextmenu (derzeit alles sehr spärlich implementiert, beides funktioniert nur wenn beim element eine id hinterlegt ist)

problem:
nach einem rechtsklick erscheint das menü, gut. allerdings setzt das "onmouseout" zu früh ein. wenn man nach dem rechtsklick auf den zweiten menüpunkt "hilfetext löschen" gehen will blendet das menü schon aus bevor man diesen punkt erreicht. es sollte aber nur ausblenden wenn man das menü verlässt.

was läuft da falsch? danke.

mfg

Sephiroth
2007-05-13, 14:04:56
Die Events bzw. die Aktionen bei den Events werden auf Kindobjekte "vererbt". Genauer gesagt ist es so: A (dein span) hat Eventhandler X (deleteHelp bei mouseout), Kind B (Table) und Enkel C (tr) und Urenkel D (td). Bei D wird nun der Event ausgelöst und dieser steigt den Baum immer weiter nach oben. Bei A angekommen reagiert der Eventhandler von A. Dieser könnte den Event jetzt daran hindern noch weiter nach oben zu steigen oder nicht - spielt aber für dein Problem keine Rolle.
http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/events.html#Events-phases

Mögliche Lösung:
function deleteHelp(e)
{
var helpobj = document.getElementById("contexthelp");
var z = helpobj.parentNode;
var targ;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;

if (helpobj == targ)
{
z.removeChild(helpobj);
document.body.style.cursor = 'help';
}
}