首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在页面加载上运行ResponsiveVoice语音

在页面加载上运行ResponsiveVoice语音
EN

Stack Overflow用户
提问于 2015-11-24 19:20:33
回答 4查看 8.1K关注 0票数 3

此操作正确,它在单击时使用文本区域,但如何将其更改为说onload

代码语言:javascript
复制
<script src="http://responsivevoice.org/responsivevoice/responsivevoice.js"></script>
<script src="http://code.jquery.com/jquery-git2.js"></script>

<textarea id="text" cols="45" rows="3"> HHHH</textarea>

<select id="voiceselection"></select>

<input onclick="responsiveVoice.speak($('#text').val(),$('#voiceselection').val());" type="button" value="Play" />
<br>
<button id="isPlaying">Playing:</button>
<p id="r">?</p>

文字区现在只写了四个字母。

我想这是关键的部分,但不能把它恰当地融入到任何执行中:

代码语言:javascript
复制
responsiveVoice.speak($('#text').val(),$('US English Female').val());

我试过:

代码语言:javascript
复制
var voicelist = responsiveVoice.getVoices();

var vselect = $("#voiceselection");

$.each(voicelist, function() {
  vselect.append($("<option />").val(this.name).text(this.name));
});

// Yours
$('#isPlaying').on('click', function() {
  $('#r').text(window.speechSynthesis.speaking)
})

$(document).ready(function() { //short code: $(function() { ... });
  responsiveVoice.speak($('#text').val(), $('US English Female').val());
});
代码语言:javascript
复制
<script src="http://responsivevoice.org/responsivevoice/responsivevoice.js"></script>
<script src="http://code.jquery.com/jquery-git2.js"></script>

<textarea id="text" cols="45" rows="3">It reads this</textarea>

<select id="voiceselection"></select>
<script>
</script>

<input onclick="responsiveVoice.speak($('#text').val(),$('US English Female').val());" type="button" value="Play" />

但我得到了一个“找不到声音:未定义”的错误。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-11-24 19:45:50

钩入OnVoiceReady处理程序,然后尝试在加载默认声音等之后说话:

代码语言:javascript
复制
responsiveVoice.OnVoiceReady = function() {
  console.log("speech time?");
  responsiveVoice.speak($('#text').val());
};
代码语言:javascript
复制
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="//responsivevoice.org/responsivevoice/responsivevoice.js"></script>

<textarea id="text" cols="45" rows="3">one two three</textarea>

票数 9
EN

Stack Overflow用户

发布于 2015-11-26 12:26:01

谢谢你使用ResponsiveVoice!

您应该使用以下代码附加到OnReady事件:

代码语言:javascript
复制
responsiveVoice.addEventListener("OnReady", myInitFunction);

因为等待页面加载是不够的。你得等到声音被装上。

为什么iphone safari不运行这个程序呢?

苹果公司禁止在没有用户操作的情况下启动任何语音。因此,您需要在单击按钮之后触发to (),例如。

另外,为什么在android浏览器上经过4或5次刷新10秒后,它就停止工作了?

ResponsiveVoice在安卓设备上有一些问题。我们正在努力修复它。我们推荐使用我们的最新版本,您可以在这里找到:

https://code.responsivevoice.org/develop/responsivevoice.js

票数 2
EN

Stack Overflow用户

发布于 2015-11-24 19:22:56

不要使用内联事件处理。使用抽象事件。它使代码更容易理解/读取。

代码语言:javascript
复制
$(document).ready(function() { //short code: $(function() { ... });
    responsiveVoice.speak($('#text').val(),$('#voiceselection').val());
});

文档就绪事件是在DOM加载完成时触发的。

没有jQuery版本:

window.onload,使用新的ES6标准箭头函数。不需要jQuery!

代码语言:javascript
复制
window.onload = () => {
    responsiveVoice.speak(document.getElementById("text").value, document.getElementById("voiceselection").value);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33902050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档