0

我想在Eric's blog的帮助下试验speechSynthesis APIspeechSynthesis API不起作用

This fiddle工作正常,这意味着有网站no issue with the audio device permission(纠正我,如果我错了)。我做了我的own fiddle,但似乎没有工作(我的意思是不是说你好世界)。

这里是我的代码:

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>

更新:如所指出的enhzflep但是代码在这里工作没有JSFiddle's editor

任何建议,这类人?

回答

1

Hmmm.Well,你发布在这个页面上的代码片段适用于我,但包含相同代码的小提琴不适用。但是,如果将第二个下拉列表更改为"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>