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>