我使用PHP,JavaScript和Ajax创建了一个messenger Web应用程序。现在,我希望在用户收到的每条消息上播放声音。为此,我使用了这个算法:
var sound1="";
var sound2="";
$(document).ready(function(){
var soundvar=setInterval(soundFunc, 800);
function soundFunc()
{
var chatattr4=$(".chatwindow").css("visibility");
if(chatattr4=="visible")
{
sound1=$("#conversation #receivermessage").last().text();
var soundvar2=setTimeout(soundFunc2, 700);
function soundFunc2()
{
sound2=$("#conversation #receivermessage").last().text();
}
}
var soundvar3=setTimeout(soundFunc3, 750);
function soundFunc3()
{
if(sound1!=sound2)
{
var audio = new Audio('fb.mp3');
audio.play();
}
}
}
});
所以我正在做的是检查两个不同 setTimeout 中最后收到的消息的每一秒。如果不同,则播放声音。它的工作几乎没问题,但有时声音没有播放。 (如果您收到的消息太快,则收到的每条消息都不会播放声音,这是其他情况,我没有问题)。我不认为浏览器或声音有任何问题。但我认为这个算法存在问题。我不想使用任何其他算法。
可以修改/改进/修复此算法以使其更好地运行吗? (准确度为95-99%)。