ResponsiveVoice.js - 了解iOS TTS所需的直接用户交互

时间:2017-01-13 01:18:42

标签: javascript ios onload responsivevoice

在怪癖部分的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中却没有。

1 个答案:

答案 0 :(得分:3)

所以我一直在寻找这个并隐藏在他们的常见问题解答中,他们有iOS指南。他们并没有完全规避它,而是在第一次实例之后不时地绕过它。

  

在iOS上,需要通过用户操作(即点击)触发某些事件,例如语音合成。例如,这导致ResponsiveVoice不会在页面加载时调用调用。

     

使用语音合成,用户触发的操作只需要完成一次。第一个之后的进一步直接调用将按预期工作。

     

因此,建议的最佳做法是为用户添加“开始”按钮以供用户单击,并将其用作对responsiveVoice.speak()的初始化调用。如果需要,该调用可以有一个空格作为文本,因此对用户没有影响。

您不需要实际说出任何内容,因此只需点击用户点击的按钮即可调用responsiveVoice就足够了。

<button onclick="responsiveVoice.speak('');">Enable Voice</button>

响应语音常见问题解答:https://responsivevoice.org/faq/