Javascript 是否允许在没有用户交互的情况下运行speechSynthesis的问题

Javascript 是否允许在没有用户交互的情况下运行speechSynthesis的问题,javascript,browser,speech-synthesis,browser-feature-detection,Javascript,Browser,Speech Synthesis,Browser Feature Detection,在某些设备上,似乎不允许在没有用户交互的情况下运行speechSynthesis。我的电脑浏览器以前会发出警告,但现在它可以工作了(我不知道我是否在这段时间内意外更改了一些权限),而我的Android平板电脑似乎允许从httphttp上的localhost,但不允许从httphttps上的我的生产站点使用它。电话总是不允许这样做 我想知道是否有某种方法可以确定在运行的设备上是否允许这样做,以便我可以显示通知,或者隐藏在我的应用程序中提供文本到语音转换的选项 它依赖于浏览器。至少,Chrome在默

在某些设备上,似乎不允许在没有用户交互的情况下运行speechSynthesis。我的电脑浏览器以前会发出警告,但现在它可以工作了(我不知道我是否在这段时间内意外更改了一些权限),而我的Android平板电脑似乎允许从http
http
上的
localhost
,但不允许从http
https
上的我的生产站点使用它。电话总是不允许这样做


我想知道是否有某种方法可以确定在运行的设备上是否允许这样做,以便我可以显示通知,或者隐藏在我的应用程序中提供文本到语音转换的选项

它依赖于浏览器。至少,Chrome在默认情况下允许在没有用户交互的情况下使用语音,但情况发生了变化。一种常见的检查方法是将一个空的话语排队,然后查看
SpeechSynthesis.speaking
SpeechSynthesis.pending
是否为
true

//允许:
btn.onclick=()=>{
speechSynthesis.speak(新speechSynthesis(“”));
const worked=speechSynthesis.speaking | | speechSynthesis.pending;
控制台日志(已工作);
};

单击
这对我不起作用。带有
onclick
事件的第一个示例仍然显示
false
。这是在我的个人电脑Firefox上,理想情况下,两者都应该说
true
(因为在实践中没有交互说话的功能)就像Firefox一样,新的话语会打开
pending
状态,而不是
speaking
状态。