我如何让我的聊天脚本播放声音时,有一个新的帖子
How do I get my chat script to play a sound when there is a new post?
聊天页面JavaScript:我如何让我的聊天脚本播放声音时,有一个新的帖子?
以下是我正在使用的3个脚本:<script type="text/javascript"><!--
function showmessages(){
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","show-messages.php?" + Math.random(),false);
xmlhttp.send(null);
}
else{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET","showmessages.php?" + Math.random(),false);
xmlhttp.send();
}
document.getElementById('messages').innerHTML = xmlhttp.responseText;
setTimeout('showmessages()',5000);
}
showmessages();
function send(){
var sendto = 'send.php?message=' + document.getElementById('message').value + '&name=' + document.getElementById('name').value;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET",sendto,false);
xmlhttp.send(null);
}
else{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET",sendto,false);
xmlhttp.send();
}
var error = '';
switch(parseInt(xmlhttp.responseText)){
case 1:
error = '<span class="pink">The database is down!</span>';
break;
case 2:
error = '<span class="pink">The database is down!</span>';
break;
case 3:
error = '<span class="pink">Don`t forget the message!</span>';
break;
case 4:
error = '<span class="pink">The message is too long!</span>';
break;
case 5:
error = '<span class="pink">Don`t forget the name!</span>';
break;
case 6:
error = '<span class="pink">The name is too long!</span>';
break;
case 7:
error = '<span class="pink">This name is already used by somebody else!</span>';
break;
case 8:
error = '<span class="pink">The database is down!</span>';
}
if(error == ''){
document.getElementById('error').innerHTML = '';
showmessages();
}
else{
document.getElementById('error').innerHTML = error;
}
}
// --></script>
Your Name: <input type="text" id="name" value="" /><br />
Enter Your Message:<br /><textarea id="message" cols="20" rows="2"></textarea><br />
<input type="button" value="Send" onClick="send();document.getElementById('message').value = '';"/>
<div id="messages"></div>
<div id="error"></div>
show-messages.php
<?php
mysql_connect('*******','*******','*******1');
mysql_select_db('chat') or die(2);
$random = microtime(true);
echo '<p><a href="?'.$random.'">Refresh Chat</a></p>
';
$result = mysql_query("select * from chat order by time desc limit 0,10");
$messages = array();
$i = 0;
while($row = mysql_fetch_array($result)){
$messages[$i] = '<p class="purple"><span class="pink"><strong>'. $row[name] . '</strong></span> said:<br /><span class="purple">' . $row[message] . '</span><br /> <span class="pink">';
$timeago = time() - $row['time'];
if($timeago > 86400){
$messages[$i] .= date('g:i A M, d Y',$row[time]);
}
else{
$hours = floor($timeago / 3600);
$minutes = floor(($timeago - ($hours * 3600)) / 60);
$seconds = floor($timeago - ($hours * 3600) - ($minutes * 60));
if($hours > 0){
if($minutes > 9){
if($seconds > 9){
$messages[$i] .= $hours . ' h, ' . $minutes . ' min, ' . $seconds . ' sec';
}
else{
$messages[$i] .= $hours . ' h, ' . $minutes . ' min, 0' . $seconds . ' sec';
}
}
else{
if($seconds > 9){
$messages[$i] .= $hours . ' h, 0' . $minutes . ' min, ' . $seconds . ' sec';
}
else{
$messages[$i] .= $hours . ' h, 0' . $minutes . ' min, 0' . $seconds . ' sec';
}
}
}
else if($minutes > 0){
if($seconds > 9){
$messages[$i] .= $minutes . ' min, ' . $seconds . ' sec';
}
else{
$messages[$i] .= $minutes . ' min, 0' . $seconds . ' sec';
}
}
else{
$messages[$i] .= $seconds . ' sec';
}
$messages[$i] .= ' ago';
}
$messages[$i] .= "</span></p><p class='purple'>----------------------------</p>";
$old = $row[time];
$i++;
}
for($i=0;$i<=9;$i++){
echo $messages[$i];
}
mysql_query("delete from chat where time < " . $old);
$random = microtime(true);
echo '<p><a href="?'.$random.'">Refresh Chat</a></p>';
?>
send.php
<?php
//Connect to MySQL
mysql_connect('******', '******', '******') or die (1);
//Select database
mysql_select_db('chat') or die (2);
$message = $_GET['message'];
$name = $_GET['name'];
//Check if message is empty and send the error code
if(strlen($message) < 1){
echo 3;
}
//Check if message is too long
else if(strlen($message) > 255){
echo 4;
}
//Check if name is empty
else if(strlen($name) < 1){
echo 5;
}
//Check if name is too long
else if(strlen($name) > 29){
echo 6;
}
//Check if the name is used by somebody else
else if(mysql_num_rows(mysql_query("select * from chat where name = '" . $name . "' and ip != '" . $_SERVER['REMOTE_ADDR'] . "'")) != 0){
echo 7;
}
//If everything is fine
else{
//This array contains the characters what will be removed from the message and name, because else somebody could send redirection script or links
$search = array("<",">",">","<");
//Insert a new row in the chat table
mysql_query("insert into chat values ('" . time() . "', '" . str_replace($search,"",$name) . "', '" . $_SERVER['REMOTE_ADDR'] . "', '" . str_replace($search,"",$message) . "')") or die(8);
}
?>
我做了什么改变,以获得一个。wav文件播放,如果和当一个新的帖子?谢谢…
因为函数showmessages()是通过AJAX调用show-messages.php的,所以一个回调选项会很好。你考虑过使用jQuery作为AJAX框架吗?我一直在用它。它为不同类型的结果提供了令人难以置信的处理程序(我最喜欢的是JSON返回),并且在函数完成后运行回调函数,您可以设置这些回调函数。
在回调中,如果你能触发一个声音来播放,那将是完美的。然而,我不熟悉在网站上播放音乐(除了将。wav文件嵌入到后台播放的HTML中的老派方法,但这是web 1.0,而不是2.0)。
这是一个插件通过jQuery,我发现可以执行播放一定的噪音,你已经存储在服务器上:http://plugins.jquery.com/project/sound_plugin
我敢肯定,利用这两种方法,你很快就能完成这项工作。编辑:function showmessages(){
$.get("show-messages.php", { random: Math.random()},
function(data){
$('#messages').html(data); // put teh return data here
// call back the function to play sound based on the jQuery plugin.
});
}
上面是您可以设置的更简单的AJAX查询,而不是当前的showmessage()函数。
此外,如果您希望使用jSON获得更复杂的结果,其中包含多个数组(将其视为PHP数组,只是以javascript对象的形式)。还要注意PHP中的json_encode()函数,它可以从任何PHP数组(甚至是多级数组,我认为不包括PHP对象)中创建JSON对象
function showmessages(){
$.get("show-messages.php", { random: Math.random()},
function(data){
if(data.code==1) {
// assuming 1 means successful
$('#messages').html(data.content); // put teh return data here
// call back the function to play sound based on the jQuery plugin.
} else {
// execute code that runs IF the result was no good
}
},'json');
}
相关文章:
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 有可能在来自链接的警报中有一个值吗
- 是否<asp:文本框>有一个onFocusLost事件
- 如何减少在移动网络应用程序上播放声音的延迟
- 你能用sound.js在播放声音文件后5秒执行一个动作吗
- Javascript自动播放声音文件,单击其中一个按钮时停止
- 仅在一个窗口中播放声音,该窗口使用javascript(可能是jquery)处于活动状态(在一个网站内)
- 如何在页面中有一个jQuery播放器对象的多个实例(音频对象)
- 我怎么能在一个页面上有两个这样的音频播放器,而不点击其中一个,另一个播放或显示隐藏播放列表
- 在另一个jquery事件完成后播放声音
- 当按钮有一定的值时,通过javascript播放声音
- 通过点击按钮在另一个网页上播放声音
- 是否有可能有一个按钮,可以切换音频的播放状态
- 点击一个按钮在Javascript上播放声音
- 我如何让我的聊天脚本播放声音时,有一个新的帖子
- 是否有一个用于媒体播放器时间控制的HTML组件?
- 播放声音文件有副作用
- 播放声音有延迟(100ms)
- 当变量大于一个数字时播放声音