2016-11-23 30 views
5

HTML5語音不工作在Safari在Mac 10.0.1,HTML講話不工作在Safari上MAC 「類型錯誤」

我得到的錯誤,

TypeError: Argument 1 ('utterance') to SpeechSynthesis.speak must be an instance of SpeechSynthesisUtterance

它適用於Chrome和Firefox,我很確定它曾經在Safari上工作...

var u = new SpeechSynthesisUtterance(); 
u.text = "hello world"; 
u.lang = "en"; 
window.speechSynthesis.speak(u); 
+2

嗯,奇怪。我只是在相同版本的Safari(10.0.1)上測試它,它工作正常。 –

+0

這適用於我在OS X 10.11.6上運行的Safari 10.0.1(11602.2.14.0.7)。您看到此錯誤的哪些版本的Safari?如果您正在運行OS X 10.0.1,我假設舊版本的Safari? – Whymarrh

+0

版本是Safari 10.0.1 – James

回答

2

好吧,終於搞清楚了。

我有一些兼容性代碼來支持無HTML5語音瀏覽器,

if (SpeechSynthesisUtterance == undefined) { 
    function SpeechSynthesisUtterance(text) { 
     this.text = text; 
    } 
} 

這適用於Chrome和Firefox,但在Safari似乎當腳本解析在任何腳本中的任何功能進行評估,所以即使SpeechSynthesisUser事件已存在,函數也會被聲明。

猜猜我需要以不同的方式做...

+1

您可能想要:'if(!window.SpeechSynthesisUtterance){window.SpeechSynthesisUtterance = function(text){this.text = text; }},if語句中的命名函數無效:http://stackoverflow.com/questions/10069204/function-declarations-inside-if-else-statements –

相關問題