JavaScript window.speechSynthesis 的代码无法从本地主机运行
JavaScript code for window.speechSynthesis not working from localhost
以下代码在 Chrome DevTools 中工作正常,但是当我 运行 通过本地主机 allVoices
returns 一个空数组时。
tts = window.speechSynthesis
// from here code only works if put into DevTools, not from file or localhost
allVoices = tts.getVoices()
console.log(allVoices) // gives empty array
我做错了什么?
在ChromegetVoices()return中是空的,然后在语音准备好时有一个事件onvoiceschanged,它接受一个回调。
你的命令在 DevTools 中有效,因为当你输入时 'allVoices = tts.getVoices()' 声音已经到达并且可用。
但是其他浏览器,例如Safari return 语音同步,无需回调。
因此最好的代码似乎是:
let voices = speechSynthesis.getVoices();
if (voices.length) {
resolve(voices);
return;
}
speechSynthesis.onvoiceschanged = () => {
voices = speechSynthesis.getVoices();
if (voices.length) resolve(voices);
};
以下代码在 Chrome DevTools 中工作正常,但是当我 运行 通过本地主机 allVoices
returns 一个空数组时。
tts = window.speechSynthesis
// from here code only works if put into DevTools, not from file or localhost
allVoices = tts.getVoices()
console.log(allVoices) // gives empty array
我做错了什么?
在ChromegetVoices()return中是空的,然后在语音准备好时有一个事件onvoiceschanged,它接受一个回调。
你的命令在 DevTools 中有效,因为当你输入时 'allVoices = tts.getVoices()' 声音已经到达并且可用。
但是其他浏览器,例如Safari return 语音同步,无需回调。
因此最好的代码似乎是:
let voices = speechSynthesis.getVoices();
if (voices.length) {
resolve(voices);
return;
}
speechSynthesis.onvoiceschanged = () => {
voices = speechSynthesis.getVoices();
if (voices.length) resolve(voices);
};