Hi,
wenn Events auf einem Objekt ausgelöst werden, weden sie automatisch an das "nächsthöhere Objekt" weitergegeben, durchlaufen also die gesamte "Dokumentenhierarchie" bis sie im window angekommen sind.
Das läßt sich aber verhindern, indem du das explizit angibst.
Leider haben der IE und Netscape zwei unterschiedliche Event-Modelle.
Während beim Netscape das Event direkt an die auf ihm notierte Funktion übergeben wird, wird das Event im IE in einer "globalen Variable" als "Unterobjekt" bzw. Eigenschaft von window gespeichert.
Im IE hast du also Zugriff auf das Event über:
window.event
Im Netscape kannst du durch notieren eines Parameters direkt in der Funktion auf das Event zugreifen:
function meineFunktion(event)
{
event //direkter Zugriff auf das Event
}
Der Parameter kann auch anders benannt werden z.B.: "e"
Die Inkompatibilität beider Event-Modelle kannst du folgendermaßen umgehen:
function meineFunktion(e)
{
if(!e) //nachschauen, ob der Funktion ein Event übergeben wurde
{e=window.event;} //wenn nicht, IE-Event in Variable"e" speichern.
}
Jetzt hast du in der Funktion über die Variable "e" Zugriff auf das Event, egal obs IE oder NS is.
Jetzt mußt du nur noch verhindern, daß das Event weitergegeben wird:
Beim IE mußt du dazu die entsprechende Eigenschaft des Event auf true setzen:
e.cancelBubble=true;
und im NS ist es eine Methode des Event-Objektes und geht so:
e.stopPropagation();
Zusammengefaßt läßt sich dein Vorhaben also folgendermaßen realisieren:
function meineFunktion(e)
{
if(!e)
{e=window.event;}
if(e.stopPropagation)
{e.stopPropagation();}
else
{e.cancelBubble=true;}
return false;
}
Gruß
peter