在怪癖部分的ResponsiveVoice.JS website下,它声明:
如果没有直接的用户交互,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>
我想在iOS中的页面加载时调用responsiveVoice.speak('Test');
,而无需直接用户交互。我该怎么做?
这个相同的代码段在桌面上的桌面/ Chrome上的Android / Safari上说得很好,但在iOS中却没有。
答案 0 :(得分:3)
所以我一直在寻找这个并隐藏在他们的常见问题解答中,他们有iOS指南。他们并没有完全规避它,而是在第一次实例之后不时地绕过它。
在iOS上,需要通过用户操作(即点击)触发某些事件,例如语音合成。例如,这导致ResponsiveVoice不会在页面加载时调用调用。
使用语音合成,用户触发的操作只需要完成一次。第一个之后的进一步直接调用将按预期工作。
因此,建议的最佳做法是为用户添加“开始”按钮以供用户单击,并将其用作对responsiveVoice.speak()的初始化调用。如果需要,该调用可以有一个空格作为文本,因此对用户没有影响。
您不需要实际说出任何内容,因此只需点击用户点击的按钮即可调用responsiveVoice就足够了。
<button onclick="responsiveVoice.speak('');">Enable Voice</button>
响应语音常见问题解答:https://responsivevoice.org/faq/