gpt4 book ai didi

javascript - ResponsiveVoice 只为多个话语调用 onend 回调一次

转载 作者:行者123 更新时间:2023-11-29 23:45:46 26 4
gpt4 key购买 nike

我想用相应的声音突出显示特定的段落/列表。

responsivevoice.js有没有回调。我得到了 onend 作为回调函数。但它不起作用。

每当我使用 console 而不是 highlight 时,它只会产生一个而不是三个。

我认为 onend 只在第一个 para 之后调用。但它应该适用于所有 para/ul

请帮帮我..

我的代码:-

 <!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="http://code.responsivevoice.org/develop/1.5.2/responsivevoice.js"></script>

<script>
var currentDataValue =0;
$( document ).ready(function(){
$("#1").click(function(){
$("p,ul").each(function( index, element){
responsiveVoice.speak($(this).text(),$('UK English Female').val(),{
pitch: .7,
onend: function() {
$(this).css( "backgroundColor", "yellow" );

}
});

});
});
});

$( document ).ready(function(){
$("#2").click(function(){
responsiveVoice.pause();
});
});
$( document ).ready(function(){
$("#3").click(function(){
responsiveVoice.resume();
});
});
$(window).load(function(){
$("#4").click(function(){
responsiveVoice.cancel();
});
});
</script>
</head>
<body>

<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<ul>
<li>this unoder list </li>
</ul>
<p id="test">This is another paragraph.</p>
<button id="1">start</button>
<button id="2">pause</button>
<button id="3">resume</button>
<button id="4">stop</button>
</body>
</html>

最佳答案

嗯,这个ResponsiveVoice是一个有bug的商业库,它为回调设置了单一变量,所以它只调用最后配置的回调,而不是所有的回调。您当然可以修改库,也可以像这样一个一个地调用项目:

$("#1").click(function(){

var elements = $("p, ul");
speak = function(i, elements) {
responsiveVoice.speak($(elements[i]).text(),$('UK English Female').val(),{
pitch: .7,
onend: function() {
$(elements[i]).css("backgroundColor", "yellow");
if (i < elements.length) {
speak(i + 1, elements);
}
}
});
};
speak(0, elements);
});

我会像这样简单地使用 Chrome API:

var currentDataValue =0;
$( document ).ready(function(){
$("#1").click(function(){
var voice = speechSynthesis.getVoices().filter(function(voice){return voice.name == 'Allison'; })[0];
$("p,ul").each(function(index, element) {
u = new SpeechSynthesisUtterance($(this).text());
u.voice = voice;
u.onend = (function() {
console.log("Here");
$(this).css( "background-color", "yellow" );
}).bind($(this));
speechSynthesis.speak(u);
});
});
});

关于javascript - ResponsiveVoice 只为多个话语调用 onend 回调一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44255187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com