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

Pre*_*ors 5 javascript onload ios responsivevoice

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>
Run Code Online (Sandbox Code Playgroud)

我想responsiveVoice.speak('Test');在没有直接用户交互的情况下调用iOS中的页面加载.我该怎么做?

这个相同的代码段在桌面上的桌面/ Chrome上的Android/Safari上说得很好,但在iOS中却没有.

Mit*_*ery 5

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

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

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

因此,推荐的最佳实践是在体验中添加一个“开始”按钮以供用户单击,并将其用作对 responseVoice.speak() 的初始化调用。如果需要,该调用可以有一个空格作为文本,因此对用户没有影响。

您实际上不需要说任何话,因此拥有一个用户只需单击即可调用responsiveVoice 的按钮就足够了。

<button onclick="responsiveVoice.speak('');">Enable Voice</button>
Run Code Online (Sandbox Code Playgroud)

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