SpeechSynthesis: voiceschanged-Ereignis
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2022 browserübergreifend verfügbar.
Das voiceschanged-Ereignis der Web Speech API wird ausgelöst, wenn sich die Liste der SpeechSynthesisVoice-Objekte geändert hat, die von der Methode SpeechSynthesis.getVoices() zurückgegeben würde.
Syntax
Verwenden Sie den Ereignisnamen in addEventListener():
addEventListener("voiceschanged", (event) => { })
Alternativ können Sie ihn der Event-Handler-Eigenschaft der Schnittstelle zuweisen:
onvoiceschanged = (event) => { }
Ereignistyp
Ein allgemeines Event ohne zusätzliche Eigenschaften.
Beispiele
Wenn das Ereignis ausgelöst wird, können Sie damit eine Liste von Stimmen neu befüllen, aus denen Benutzer wählen können. Sie können das voiceschanged-Ereignis mit der Methode addEventListener verwenden:
const synth = window.speechSynthesis;
synth.addEventListener("voiceschanged", () => {
const voices = synth.getVoices();
for (const voice of voices) {
const option = document.createElement("option");
option.textContent = `${voice.name} (${voice.lang})`;
option.setAttribute("data-lang", voice.lang);
option.setAttribute("data-name", voice.name);
voiceSelect.appendChild(option);
}
});
Oder verwenden Sie die Event-Handler-Eigenschaft onvoiceschanged. Beachten Sie jedoch, dass dies gegebenenfalls andere mit onvoiceschanged hinzugefügte Event-Listener ersetzt:
const synth = window.speechSynthesis;
synth.onvoiceschanged = () => {
const voices = synth.getVoices();
for (const voice of voices) {
const option = document.createElement("option");
option.textContent = `${voice.name} (${voice.lang})`;
option.setAttribute("data-lang", voice.lang);
option.setAttribute("data-name", voice.name);
voiceSelect.appendChild(option);
}
};
Spezifikationen
| Spezifikation |
|---|
| Web Speech API> # eventdef-speechsynthesis-voiceschanged> |
| Web Speech API> # dom-speechsynthesis-onvoiceschanged> |