2016-11-23 14 views
5

HTML5 mowy nie działa na Safari na Mac 10.0.1,HTML mowy nie działa na Mac Safari "TypeError"

pojawia się błąd,

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

To działa na Chrome i Firefox, i jestem prawie pewien, że kiedyś działał na Safari ...

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

Hmm, dziwne. Właśnie testowałem go w tej samej wersji Safari (10.0.1) i działało dobrze. –

+0

Działa to również dla mnie w Safari 10.0.1 (11602.2.14.0.7) działającym na OS X 10.11.6. Jakie wersje Safari widzisz na tym błędzie? Zakładam starą wersję Safari, jeśli używasz OS X 10.0.1? – Whymarrh

+0

wersja to Safari 10.0.1 – James

Odpowiedz

2

Dobra, w końcu to wymyśliłem.

miałem jakiś kod zgodności wspierania przeglądarce bez mowy HTML5

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

To działa w Chrome i Firefox, ale w Safari wydaje się, że każda funkcja w każdym skrypcie jest oceniana gdy skrypt jest analizowany, tak funkcja zostaje zadeklarowana, mimo że SpeechSynthesisUtterance już istnieje.

Zgaduję, że muszę zrobić to inaczej ...

+1

Prawdopodobnie chcesz: 'if (! Window.SpeechSynthesisUtterance) {window.SpeechSynthesisUtterance = function (text) {this.text = text; }} ', nazwane funkcje w instrukcjach if są nieprawidłowe: http://stackoverflow.com/questions/10069204/function-declarations-inside-if-else-sample –

Powiązane problemy