Start · Sprachen · JavaScript · Referenz · MouseEvent.mozInputSource

MouseEvent.mozInputSource

Eigenschaft

Schreibgeschützte, nur in Firefox verfügbare Eigenschaft. Sie gibt als Zahl an, welcher Gerätetyp (Maus, Stift, Touch, Tastatur …) ein <code>MouseEvent</code> ausgelöst hat.

seit JavaScript Nicht standardisiert – nur Firefox (Gecko), veralt Kategorie: webapi

Signatur

MouseEvent.mozInputSource

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 unbekannt
  • MOZ_SOURCE_MOUSE (1): Maus
  • MOZ_SOURCE_PEN (2): Stift auf einem Grafiktablett
  • MOZ_SOURCE_ERASER (3): Radierer-Ende eines Stifts
  • MOZ_SOURCE_CURSOR (4): Cursor-Gerät
  • MOZ_SOURCE_TOUCH (5): Touchscreen
  • MOZ_SOURCE_KEYBOARD (6): Tastatur, z. B. ein durch Enter ausgelöster click

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');
  }
});
Quelle (Firefox): Maus

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');
  }
});
Touch-Eingabe: größere Trefferflächen verwenden

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);
  }
});
Stift erkannt, Druck: 0.5

// 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 mit typeof 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.pointerType funktioniert in allen Browsern (Baseline) und liefert zusätzlich Druck, Neigung und Kontaktgröße. Tastatur-Klicks erkennst du an MouseEvent.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 Regel 0 (MOZ_SOURCE_UNKNOWN).