window.speechsynthesis的javascript代码无法从本地主机运行

0x6upsns  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(333)

以下代码在ChromeDevTools中运行良好,但当我通过localhost运行此代码时 allVoices 返回一个空数组。

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

我做错了什么?

py49o6xq

py49o6xq1#

在chrome getvoices()中,返回空,然后在语音准备就绪时出现一个事件onvoiceschanged,它接受回调。
您的命令在devtools中工作,因为当您键入'allvoices=tts.getvoices()'时,这些声音已经到达并且可用。
但是,其他浏览器(如safari)会同步返回语音,不需要回调。
因此,最好的代码似乎是:

let voices = speechSynthesis.getVoices();
  if (voices.length) {
    resolve(voices);
    return;
  }
  speechSynthesis.onvoiceschanged = () => {
    voices = speechSynthesis.getVoices();
    if (voices.length) resolve(voices);
  };

相关问题