我们正在使用SpeechSynthesis API向用户读取文本。我们希望为用户提供暂停输出的选项,并且有speechSynthesis.pause()和speechSynthesis.resume()方法。
根据文档,speechSynthesis对象上还应该有一个标志SpeechSynthesis.paused指示暂停状态。该指示似乎不起作用,我们可以暂停SpeechSynthesis,但是似乎没有办法跟踪暂停状态,并且语音合成对象上的“ paused”标志保持为false。甚至在暂停时,speechSynthesis.speaking标志也保持为真!
我们可以手动跟踪状态,但是如果用户在暂停状态下刷新标签,则可能是因为我们失去了自定义跟踪。
我们使用的API是错误的还是仅仅是越野车?
http://blog.teamtreehouse.com/getting-started-speech-synthesis-api
最佳答案
我修改了参考文章中的CodePen,添加了“暂停/继续”按钮:http://codepen.io/anon/pen/MKEdZp
在我的Mac上,Safari 9.0.2和Firefox 45.0a2似乎表现出预期的效果(但Chrome 47.0.2526.111有点挑剔)。
即使speechSynthesis.speaking
= true
,下面的代码也表示window.speechSynthesis.paused
= true
// Set up an event listener for when the 'pause' button is clicked.
button2.addEventListener('click', function(e) {
console.log("window.speechSynthesis.speaking = " + window.speechSynthesis.speaking);
console.log("window.speechSynthesis.paused = " + window.speechSynthesis.paused);
if (window.speechSynthesis.speaking) {
if (window.speechSynthesis.paused) {
window.speechSynthesis.resume();
button2.innerText = "Pause";
} else {
window.speechSynthesis.pause();
button2.innerText = "Resume";
}
}
});
自原始帖子发布以来,该API可能已修复。