Hi Mathias
Man könnte höchstens untersuchen, ob eine Fallunterscheidung überhaupt nötig ist oder ob eine doppelte Zuweisung nicht für alle Browser reicht. Dann wird der Handler im KHTML und Gecko zwar zweimal aufgerufen (Opera hingegen erkennt den doppelten Handler und feuert nur den von document), aber das sollte nicht weiter stören. (Bzw. dagegen würde notfalls e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); helfen.)
Halte deinen Vorschlag auch für die eleganteste Lösung.
Ich versuche bei mir auch immer, eine solche Abfrage nicht an irgendwelche anderen Eigenarten der Browser zu koppeln, sondern direkt an das um was es auch geht.
Mit dem doppelten Abfeuern ist meiner Meinung nach aber höchste Vorsicht geboten !
Da gerät schnell mal was durcheinander.
Ich wills zum Beispiel als Umschalter zwischen 2 Bedienungsmodi verwenden.
In der Funktion wird dann abgefragt, in welchem Modus man sich gerade befindet und dann entsprechend in den anderen umgeschaltet.
Beim doppelten Abfeuern würde dann einmal umgeschaltet und auch gleich wieder zurück. Da tut sich dann also gar nichts.
Script sollte dann also so aussehen ? :
*****************************************
function FUNKTION(e)
{
if(!e){e=window.event;}
if(e.stopPropagation)
{e.stopPropagation();}
else
{e.cancelBubble=true;}
//...weiterer Code....
}
window.document.onkeypress=FUNKTION;
window.onkeypress=FUNKTION;
*****************************************
Bitte mich zu korrigieren, falls ich hier Blödsinn verzapfe.
Gruß
Peter