语音合成:voiceschanged 事件
voiceschanged
事件是 Web 语音 API 的一个事件,当 SpeechSynthesisVoice
对象列表(由 SpeechSynthesis.getVoices()
方法返回)发生变化时触发(当 voiceschanged
事件触发时)。
语法
在像 addEventListener()
这样的方法中使用事件名称,或者设置一个事件处理程序属性。
js
addEventListener("voiceschanged", (event) => {});
onvoiceschanged = (event) => {};
事件类型
一个没有添加属性的通用 Event
。
示例
这可以用于在事件触发时重新填充用户可以选择的声音列表。您可以使用 addEventListener
方法使用 voiceschanged
事件
js
const synth = window.speechSynthesis;
synth.addEventListener("voiceschanged", () => {
const voices = synth.getVoices();
for (let i = 0; i < voices.length; i++) {
const option = document.createElement("option");
option.textContent = `${voices[i].name} (${voices[i].lang})`;
option.setAttribute("data-lang", voices[i].lang);
option.setAttribute("data-name", voices[i].name);
voiceSelect.appendChild(option);
}
});
或者使用 onvoiceschanged
事件处理程序属性
js
const synth = window.speechSynthesis;
synth.onvoiceschanged = () => {
const voices = synth.getVoices();
for (let i = 0; i < voices.length; i++) {
const option = document.createElement("option");
option.textContent = `${voices[i].name} (${voices[i].lang})`;
option.setAttribute("data-lang", voices[i].lang);
option.setAttribute("data-name", voices[i].name);
voiceSelect.appendChild(option);
}
};
规范
规范 |
---|
Web 语音 API # eventdef-speechsynthesis-voiceschanged |
Web 语音 API # dom-speechsynthesis-onvoiceschanged |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。