Signatur
Beschreibung
mozInputSource ist eine Firefox-eigene, schreibgeschützte Eigenschaft von MouseEvent. Sie enthält eine Ganzzahl, die angibt, von welchem Eingabegerät ein Maus-Ereignis stammt. So lässt sich zum Beispiel ein echter Mausklick von einem Klick unterscheiden, den der Browser aus einer Touch-Geste oder einem Tastendruck (Enter/Leertaste auf einem Button) erzeugt hat.
Der Wert entspricht einer der folgenden Konstanten von MouseEvent:
MOZ_SOURCE_UNKNOWN(0): Gerät unbekanntMOZ_SOURCE_MOUSE(1): MausMOZ_SOURCE_PEN(2): Stift auf einem GrafiktablettMOZ_SOURCE_ERASER(3): Radierer-Ende eines StiftsMOZ_SOURCE_CURSOR(4): Cursor-GerätMOZ_SOURCE_TOUCH(5): TouchscreenMOZ_SOURCE_KEYBOARD(6): Tastatur, z. B. ein durch Enter ausgelösterclick
Für neuen Code solltest du nicht auf mozInputSource setzen. Der standardisierte und browserübergreifende Ersatz sind Pointer Events mit der Eigenschaft PointerEvent.pointerType ("mouse", "pen", "touch"). Tastatur-Klicks erkennst du daran, dass event.detail === 0 ist.
Beispiele
Eingabequelle eines Klicks auslesen (mit Fallback)
const button = document.querySelector('#speichern');
const quellen = {
0: 'unbekannt',
1: 'Maus',
2: 'Stift',
3: 'Radierer',
4: 'Cursor',
5: 'Touch',
6: 'Tastatur'
};
button.addEventListener('click', (event) => {
if (typeof event.mozInputSource === 'number') {
console.log('Quelle (Firefox):', quellen[event.mozInputSource]);
} else {
// Standard-Fallback: Tastatur-Klicks haben detail === 0
console.log('Quelle:', event.detail === 0 ? 'Tastatur' : 'Zeigegerät');
}
});
Vergleich mit den benannten Konstanten
document.addEventListener('mousedown', (event) => {
const { MOZ_SOURCE_TOUCH, MOZ_SOURCE_PEN } = MouseEvent;
if (MOZ_SOURCE_TOUCH === undefined) return; // kein Firefox / nicht verfügbar
if (event.mozInputSource === MOZ_SOURCE_TOUCH) {
console.log('Touch-Eingabe: größere Trefferflächen verwenden');
} else if (event.mozInputSource === MOZ_SOURCE_PEN) {
console.log('Stift-Eingabe: Zeichenmodus aktivieren');
}
});
Empfohlener, standardisierter Ersatz mit pointerType
const zeichenflaeche = document.querySelector('canvas');
zeichenflaeche.addEventListener('pointerdown', (event) => {
switch (event.pointerType) {
case 'mouse':
console.log('Maus erkannt');
break;
case 'pen':
console.log(`Stift erkannt, Druck: ${event.pressure}`);
break;
case 'touch':
console.log('Finger erkannt');
break;
default:
console.log('Unbekanntes Gerät:', event.pointerType);
}
});
// Wichtig · Fallstricke
- Nicht standardisiert: Die Eigenschaft gibt es nur in Gecko/Firefox. Chrome, Edge und Safari kennen sie nicht, dort liefert sie
undefined. Prüfe deshalb immer mittypeof event.mozInputSource === 'number', bevor du den Wert nutzt. - Veraltet: Mozilla stuft die Eigenschaft als veraltet ein. Sie kann in künftigen Firefox-Versionen für Webinhalte entfernt oder versteckt werden. Verlass dich in Produktionscode nicht darauf.
- Ersatz:
PointerEvent.pointerTypefunktioniert in allen Browsern (Baseline) und liefert zusätzlich Druck, Neigung und Kontaktgröße. Tastatur-Klicks erkennst du anMouseEvent.detail === 0. - Aus Touch-Gesten erzeugte (synthetische) Maus-Ereignisse melden in Firefox
MOZ_SOURCE_TOUCH. Wenn du zusätzlich Touch-Events abfängst, verarbeitest du dieselbe Geste leicht doppelt. - Der Wert ist schreibgeschützt. Bei per
new MouseEvent()erzeugten Ereignissen ist er in der Regel0(MOZ_SOURCE_UNKNOWN).