SpeechSynthesisUtterance не работает в мобильном браузере

Я использую SpeechSynthesisUtterance на своем мобильном веб-сайте. С этим кодом все в порядке, когда я использую его на своем веб-сайте для настольных компьютеров. Но я обнаружил, что эта функция не работает в мобильном браузере в document.ready, как показано ниже:

 $(document).ready(function(){
 var text_tts="say something";
 speakText(text_tts);
    });
function speakText(text_tts){
var u = new SpeechSynthesisUtterance();
u.text = text_tts;
u.lang = 'en-US';
u.rate = 1;
u.onend = function(event) { console.log('Finished in ' + event.elapsedTime + ' seconds.'); }
speechSynthesis.speak(u);

}

Но когда я использую событие «щелчок», оно работает:

$("body").on("click",".button",function(){
         var tmp_body_text="say something";
                   var u = new SpeechSynthesisUtterance();
                   u.text = tmp_body_text;
                   u.lang = 'en-US';
                   u.rate = 1;
                   //u.onend = function(event) { console.log('Finished in ' + event.elapsedTime + ' seconds.'); }
                   speechSynthesis.speak(u);
                   });

Пожалуйста помоги. Спасибо.


person TimLee    schedule 02.03.2015    source источник


Ответы (1)


Я видел несколько упоминаний (например, это), что speak работает только при вызове из взаимодействия с пользователем, такого как щелчок. Судя по тому, что я видел, это относится к Safari на iOS, и похоже, это то, что вы описываете в своем вопросе.

На самом деле я не нашел какой-либо документации, подтверждающей такое поведение, и был бы признателен за любые ссылки, которые кто-либо может предоставить.

person Sarah Elan    schedule 02.03.2015
comment
Я столкнулся с той же ситуацией, на iOS пользователь должен был ее инициировать... не уверен, в чем заключается идея или как ее обойти. :( - person Thibs; 23.02.2018