我们正在使用speechSynthesis API向用户读取文本。我们希望为用户提供暂停输出的选项,并且有speechSynthesis.pause()和speechSynthesis.resume()方法。
根据文档,speechSynthesis对象上还应该有一个标志,speechSynthesis.paused表示暂停状态。这个指示似乎不起作用,我们可以暂停speechSynthesis,但似乎没有可能的方法来跟踪暂停状态,并且语音合成对象上的暂停标志保持为假。甚至speechSynthesis.speaking标志在暂停时也保持为真!
我们可以手动跟踪状态,但如果用户在暂停时刷新标签,则可能是我们失去了自定义跟踪。
我们使用的API是错误的还是仅仅是错误的?
http://blog.teamtreehouse.com/getting-started-speech-synthesis-api
答案 0 :(得分:1)
我修改了引用文章中的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。