Signatur
Beschreibung
Die schreibgeschützte Eigenschaft message des SpeechRecognitionErrorEvent enthält eine Zeichenkette, die den aufgetretenen Fehler der Spracherkennung genauer beschreibt. Das Event wird beim error-Ereignis eines SpeechRecognition-Objekts ausgelöst.
Welche Art von Fehler aufgetreten ist, steht in der Eigenschaft error, z. B. "no-speech", "network" oder "not-allowed". message ergänzt diesen Code um eine Beschreibung, die man ins Protokoll schreiben oder beim Debuggen auswerten kann.
Laut Spezifikation ist der Inhalt von message nicht festgelegt und hängt vom Browser ab. In der Praxis ist die Zeichenkette oft leer. Für die Programmlogik und für Fehlertexte an Nutzer sollte deshalb immer error ausgewertet werden. message eignet sich nur als zusätzliche Information.
Rückgabewert
"" zurückgegeben.Beispiele
Fehlermeldung per addEventListener protokollieren
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'de-DE';
recognition.addEventListener('error', (event) => {
// error = Fehlercode, message = optionale Beschreibung
console.warn(`Fehler: ${event.error}`, event.message || '(keine Details)');
});
recognition.start();
Fehlertext für Nutzer mit Rückgriff auf message (onerror)
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
const texte = {
'no-speech': 'Es wurde keine Sprache erkannt.',
'audio-capture': 'Kein Mikrofon gefunden.',
'not-allowed': 'Der Zugriff auf das Mikrofon wurde verweigert.',
'network': 'Netzwerkfehler bei der Spracherkennung.'
};
recognition.onerror = (event) => {
const text = texte[event.error] ?? `Unbekannter Fehler: ${event.message || event.error}`;
document.querySelector('#status').textContent = text;
};
recognition.start();
Fehler zur Auswertung an den Server senden
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.addEventListener('error', async (event) => {
await fetch('/api/log', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
code: event.error,
message: event.message,
userAgent: navigator.userAgent,
zeit: new Date().toISOString()
})
});
});
recognition.start();
// Wichtig · Fallstricke
- Oft leer: Chrome und Safari füllen
messagemeistens nicht. Code sollte deshalb nie von ihrem Inhalt abhängen. Werte stattdessenevent.erroraus. - Nicht standardisiert: Der Text unterscheidet sich je nach Browser und Sprache. Vergleiche ihn deshalb nicht direkt mit festen Zeichenketten.
- Schreibgeschützt: Eine Zuweisung an
messagehat keine Wirkung. Im strikten Modus wird sie ohne Fehler ignoriert, weil es sich um einen Getter ohne Setter handelt. - Kompatibilität: Die Web Speech API funktioniert in Chromium-Browsern nur mit dem Präfix
webkitSpeechRecognition. Safari unterstützt sie ab Version 14.1. Firefox unterstützt die Spracherkennung standardmäßig nicht. Frage die Unterstützung deshalb immer vorher ab. - Sicherheit: Gib
messagemittextContentaus, nicht mitinnerHTML. Die Spracherkennung braucht einen sicheren Kontext (HTTPS) und die Freigabe des Mikrofons.