Javascript 在页面加载时运行ResponsiveVoice语音

Javascript 在页面加载时运行ResponsiveVoice语音,javascript,jquery,function,onload,responsivevoice,Javascript,Jquery,Function,Onload,Responsivevoice,这可以正常工作,它会在单击时显示文本区域,但是如何将其更改为显示onload <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=

这可以正常工作,它会在单击时显示文本区域,但是如何将其更改为显示
onload

<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>
我试过:

var voicelist=responsiveVoice.getVoices();
var vselect=$(“#语音选择”);
$.each(语音列表,函数(){
vselect.append($(“”).val(this.name).text(this.name));
});
//你的
$('#isplay')。在('单击',函数()上){
$('#r').text(window.speechSynthesis.speaking)
})
$(document).ready(函数(){//短代码:$(函数(){…});
responsiveVoice.speak($('#text').val(),$('US English Femal').val());
});

上面写着

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

$(document).ready(function() { //short code: $(function() { ... });
    responsiveVoice.speak($('#text').val(),$('#voiceselection').val());
});
DOM加载完成后会触发document ready事件

没有jQuery版本:

window.onload
,使用新的ES6标准箭头功能。不需要jQuery

window.onload = () => {
    responsiveVoice.speak(document.getElementById("text").value, document.getElementById("voiceselection").value);
}
根据,第二个参数必须是有效的语音类型,但在您的示例中,元素voiceselection没有值,则API失败。如果您尝试使用默认语音,API将成功

var text = $('#text').val(),
    voice = $('#voiceselection').val();

//success
responsiveVoice.speak(text); //HHHH

//fails
responsiveVoice.speak(text, voice); //HHHH, ""

//Uncaught TypeError: Cannot read property 'mappedProfile' of null(…)

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

responsiveVoice.OnVoiceReady=function(){
console.log(“语音时间?”);
responsiveVoice.speak($('#text').val());
};


一二三
感谢您使用ResponsiveVoice

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

responsiveVoice.addEventListener("OnReady", myInitFunction);
因为等待页面加载是不够的。您需要等待语音加载


为什么不在iphone safari上运行

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

还有,为什么它在4或5次之后停止工作,10次之后刷新 安卓broswer上的秒数

ResponsiveVoice在Android设备上存在一些问题。我们正在努力修复它。我们建议您使用我们的最新版本,您可以在此处找到:


这是非常安全的假设,因为他们已经在使用jQuery对象了。但是,我会补充一个普通的答案:考虑到OP的代码包含一个到jQuery的链接,我认为这是非常安全的D如果需要添加任何标记。这不是在Load上播放,它仍然需要click@JamesShelton您只是在更改onclick=”“代码吗??因为这需要包含在新的脚本标记中或作为外部脚本,所以它不会以1:1的比例替换onclick内容。
$('US English Female')
不是有效的HTML元素
responsiveVoice.speak($('#text').val(),'US English Female')
就像在评论和回答中提到的那样,问题不在于声音选择(api和libs应返回默认设置)问题在于声音尚未加载。为什么这不会在iphone safari上运行?还有,为什么在android broswer上10秒后刷新4或5次后,它会停止工作?这个功能会被弃用吗?它不在那里的API,但它确实工作!