ResponsiveVoice.js - знакомство с iOS TTS Требуется прямое взаимодействие с пользователем
На сайте ResponsiveVoice.JS в разделе "Причуды" говорится:
iOS TTS не может быть запущен без прямого взаимодействия с пользователем, ResponsiveVoice JS решает эту проблему
Но я не могу обойти это требование прямого взаимодействия с пользователем. Как вы справляетесь с этим?
Вот фрагмент кода, который я пытаюсь выполнить без взаимодействия с пользователем, который в настоящее время находится в <head>
элемент:
<script src="http://code.responsivevoice.org/responsivevoice.js"></script>
<script type="text/javascript">
function speak_static_data(){
responsiveVoice.speak('Test');
}
setTimeout(function(){ speak_static_data(); }, 3000);
</script>
Я хотел бы позвонить responsiveVoice.speak('Test');
на странице загрузки в iOS без прямого взаимодействия с пользователем. Как бы я это сделал?
Этот же фрагмент кода прекрасно работает на Android/Safari на рабочем столе /Chrome на рабочем столе, но не на iOS.
1 ответ
Так что я искал это и спрятал в их часто задаваемых вопросах у них есть Руководства по iOS. Они не полностью обходят это, но вместо этого обходят это всегда после первой инстанции.
В iOS некоторые события, такие как синтез речи, должны запускаться с помощью действия пользователя (например, щелчка). Это заставляет ResponsiveVoice говорить вызовы, чтобы не работать, например, при загрузке страницы
С помощью синтезатора речи это инициируемое пользователем действие необходимо выполнить только один раз. Дальнейшие прямые звонки после первого будут работать как положено.
Таким образом, рекомендуется использовать кнопку "Пуск", чтобы пользователь мог щелкнуть ее, и использовать ее в качестве вызова инициализации responseiveVoice.speak(). Этот вызов, при желании, может иметь пустое пространство в виде текста, поэтому он не оказывает влияния на пользователя.
На самом деле вам не нужно ничего говорить, поэтому достаточно иметь кнопку, на которую пользователь просто нажимает, чтобы вызвать responseiveVoice.
<button onclick="responsiveVoice.speak('');">Enable Voice</button>
Responsve Voice FAQ: https://responsivevoice.org/faq/