Вызов Speech API в iOS Safari из обратного вызова

Я хочу использовать HTML5 Speech API для синтеза речи, вызывая window.speechSynthesis.speak(...), который работает почти во всех браузерах, как и ожидалось, но у меня есть некоторые проблемы с iOS Safari:

Вызов speechSynthesis.speak(...) возможен только в iOS Safari, если пользователь сам инициировал вызов функции, щелкнув где-нибудь. Если это так, все работает так, как ожидалось. У меня проблема в том, что мне нужно вызвать speechSynthesis.speak(...) в функции обратного вызова, которая вызывается при возврате http-запроса. Поскольку эта функция обратного вызова больше не запускается пользователем напрямую, синтезатор речи не работает.

Есть ли способ обойти это ограничение? Я знаю, что такое поведение должно защитить пользователя от неправильного использования API, но в моем сценарии синтез запускается по действию пользователя, но между ними есть удаленный запрос.


person SebastianR    schedule 11.02.2017    source источник
comment
stackoverflow.com/a/33748459/226844 Я не знаю, работает ли то, что предлагает этот парень, попробую. когда я доберусь до iPhone. Может быть, вы можете попробовать это и дайте мне знать   -  person Sarsaparilla    schedule 13.02.2017
comment
responsivevoice.org/faq/#thb- section-0-row-0-column-0-block-5 также в соответствии с этим действие пользователя требуется только в первый раз   -  person Sarsaparilla    schedule 13.02.2017
comment
Вы правы, вам нужно только один раз вызвать его из действия пользователя. Итак, что я сделал, так это то, что я вызываю функцию speechSynthesis.speak(), когда пользователь что-то делает. Последующие вызовы speak(...) работают, независимо от того, что их вызвало!   -  person SebastianR    schedule 13.02.2017
comment
Фантастика! Я собираюсь сделать то же самое для своего сайта readaloud.news.   -  person Sarsaparilla    schedule 13.02.2017