Javascript -在变量变化时播放声音
Javascript - Playing sound on variable change
我会尽可能多地解释这一点,但基本上我想做的是为我的网站创建一个即时通讯服务,供一群人私下使用。我已经完成了发送和接收,但我似乎找不到通知声音的工作。
我想要的是在收到新消息时播放通知声音。我已经摆弄了大约45分钟了,我试着四处寻找解决方案,但我似乎找不到任何用处。
这是我的Javascript:
function update() {
var xmlhttp=new XMLHttpRequest();
var username = "<?php echo $ugt ?>";
var output = "";
var number = 0;
var messages = msgarea.childElementCount / 2;
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var response = xmlhttp.responseText.split("'n")
var rl = response.length
var item = "";
for (var i = 0; i < rl; i++) {
item = response[i].split("''")
if (item[1] != undefined) {
if (item[0] == username) {
output += "<div class='"msgsentby ext'"><div class='imgprop'></div></div><div class='"msgc'"> <div class='"msg msgfrom'">" + item[1] + "</div> <div class='"msgarr msgarrfrom'"></div> </div>";
} else {
output += "<div class='"msgsentby'"><img src='https://api.lspd-fibo.com/avatar/?gt=" + item[0] + "'></div> <div class='"msgc'"> <div class='"msg'">" + item[1] + "</div> <div class='"msgarr'"></div></div>";
number = msgarea.childElementCount / 2;
}
}
}
msgarea.innerHTML = output;
if (messages < number ) {
audio.play();
setTimeout(function() {
messages = msgarea.childElementCount / 2;
}, 500);
}
msgarea.innerHTML += "number: " + number;
msgarea.innerHTML += " messages: " + messages;
}
}
xmlhttp.open("GET","get-messages.php?username=" + username,true);
xmlhttp.send();
}
function sendmsg() {
var message = msginput.value;
var delay = 1500;
if (message != "") {
var username = "<?php echo $ugt ?>";
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {}
}
message = escapehtml(message)
msgarea.innerHTML += "<div class='"msgc'" style='"margin-bottom: 30px;'"> <div class='"msg msgfrom sending'">" + message + "</div> <div class='"msgarr msgarrfrom'"></div> <div class='"msgsentby msgsentbyfrom'">Sending...</div> </div>";
msginput.value = "";
var objDiv = document.getElementById("msg-area");
objDiv.scrollTop = objDiv.scrollHeight;
xmlhttp.open("GET","update-messages.php?username=" + username + "&message=" + message,true);
xmlhttp.send();
setTimeout(function() {
var objDiv = document.getElementById("msg-area");
objDiv.scrollTop = objDiv.scrollHeight;
}, delay);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var objDiv = document.getElementById("msg-area");
objDiv.scrollTop = objDiv.scrollHeight;
}
}
}
}
如果有点乱,我很抱歉,但这是我必须处理的。我很感激任何可以提前提供帮助的人:)
//编辑1
就我个人而言,我认为可能会起作用,就是计算页面加载时的所有消息,每次脚本刷新并检测到新数字时,发出声音。我试过让这种特殊的方法工作,也无济于事,但这可能是由于我在这个过程中缺乏知识。
//编辑2
我已经编辑了我的JavaScript与我一直试图在此期间工作。
我已经采取了你的代码,移动了一些变量声明,并切换到使用Array.prototype.forEach(),所以我们不必手动处理增加索引…
function update() {
var xmlhttp=new XMLHttpRequest();
var username = "Fred";
var output = "";
var number = 0;
var oldVar; //initialize here instead of after forEach
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var response = xmlhttp.responseText.split("'n")
var rl = response.length
var item; //just declare array here but don't need to set value
response.forEach(function(responseLine,index) {
item = responseLine.split("''")
if (item[1] != undefined) {
number++;
if (item[0] == username) {
output += "<div class='"msgsentby'"><div class='imgprop'></div></div><div class='"msgc'"> <div class='"msg msgfrom'">" + item[1] + "</div> <div class='"msgarr msgarrfrom'"></div> </div>";
} else {
output += "<div class='"msgsentby'"><img src='https://api.lspd-fibo.com/avatar/?gt=" + item[0] + "'></div> <div class='"msgc'"> <div class='"msg'">" + item[1] + "</div> <div class='"msgarr'"></div></div>";
}
}
});
if (oldVar != number) {
var audio = new Audio('notification.mp3');
audio.play();
}
msgarea.innerHTML = output;
//removed var keyword here so we don't re-declare it each time
oldVar = number;
}
}
xmlhttp.open("GET","get-messages.php?username=" + username,true);
xmlhttp.send();
}
相关文章:
- 如何减少在移动网络应用程序上播放声音的延迟
- 你能用sound.js在播放声音文件后5秒执行一个动作吗
- 可以'无法播放声音
- 使用javascript播放声音
- 点击播放声音
- 如何检测网页中的更改并使用Javascript播放声音
- 在悬停图像上播放声音,悬停在图像上时停止
- 无法使用JavaScript在iPhone上播放声音,但可以在Android上播放
- 播放声音时Cordova和HTML5的差异
- 在AngularJS中将元素添加到作用域时,如何在所有设备上播放声音
- 当弹出窗口关闭时播放声音文件(谷歌扩展)
- 在iPad上播放声音时延迟
- Javascript自动播放声音文件,单击其中一个按钮时停止
- HTML5音频标签没有播放声音的铬和safari中的第一个未聚焦标签
- 单击图像时播放声音
- Phonegap兼容代码,可在网站HTML/JS页面中播放声音
- 播放声音文件时突出显示句子
- 根据当前编号逐个播放声音文件
- 使用类似 Javascript 的 matlab 播放声音
- Javascript -在变量变化时播放声音