我试图在http://docs.spring.io/spring-security/site/migrate/current/3-to-4/html5/migrate-3-to-4-xml.html#m3to4-deprecations-core-aadm的帮助下尝试使用speechSynthesis API。
Eric's blog工作正常,这意味着网站有This fiddle(如果我错了,请纠正我)。我做了no issue with the audio device permission但似乎没有工作(我的意思是它不是说 Hello world )。
这是我的代码:
function speak() {
var msg = new SpeechSynthesisUtterance('Hello world');
msg.rate = 0.7;
msg.pitch = 1;
window.speechSynthesis.speak(msg);
}

<button title="Click to listen" onclick="speak()">
Say hello world
</button>
&#13;
更新:own fiddle所指出的代码正在此处工作,但enhzflep
中没有任何建议,善良的人?
答案 0 :(得分:1)
嗯,你在这个页面上发布的片段对我来说很有用,但是包含相同代码的小提琴不适用。但是,如果您将第二个下拉菜单更改为"No wrap - in <head>"
,那么就可以了。
这是因为jsfiddle将您的代码包装到一个在加载文档时调用的函数,如下所示:
<script type="text/javascript">//<![CDATA[
window.onload=function(){
function speak() {
var msg = new SpeechSynthesisUtterance('Hello world');
msg.rate = 0.7;
msg.pitch = 1;
window.speechSynthesis.speak(msg);
}
}//]]>
</script>
通过这样做,window.onload
处理程序之外的代码(包括html中的内联JS)无法“看到”您的speak
函数。
通过更改下拉列表,jsFiddle会为显示结果的iframe生成不同的JS,如下所示:
<script type="text/javascript">//<![CDATA[
function speak() {
var msg = new SpeechSynthesisUtterance('Hello world');
msg.rate = 0.7;
msg.pitch = 1;
window.speechSynthesis.speak(msg);
}
//]]>
</script>