2013-03-27 126 views
5

嗨我有一个消息警告框,当用户得到一条新消息时出现,我想要做的是当这个框弹出时添加声音,我使用php if语句来检查用户何时得到一个新的消息,我已经尝试通过执行以下操作来添加声音,但它不工作,请有人告诉我如何做到这一点。谢谢。当php/mysql如果语句为真时播放声音片段?

<?php 
$check_new_chats = check_new_chats(); 
while ($chat = mysql_fetch_array($check_new_chats)) 
if (isset($_SESSION['user_id'])) { 
     if ($chat['to_user_id'] == $_SESSION['user_id']){ 
     echo("<embed name='sound_file' src='/assets/music/sound_file.mp3' loop='true' hidden='true' autostart='true'/>"); ?> 
+0

也许不相关,但是代码是否需要用'while'循环中的括号'{}'封装? – hellohellosharp 2013-03-27 23:58:15

+0

我想这不是一个真正的PHP/MySQL问题..你检查过,如果嵌入标签是你的页面源的一部分? – 2013-03-27 23:58:52

回答

3
<?php 
$check_new_chats = check_new_chats(); 
while ($chat = mysql_fetch_array($check_new_chats)) 
if (isset($_SESSION['user_id'])) { 
    if($chat['to_user_id'] == $_SESSION['user_id']){ 
     echo '<script type="text/javascript">play_sound();</script>'; 
    } 
} 
?> 

这里的JavaScript函数:

<script type="text/javascript"> 
    function play_sound() { 
     var audioElement = document.createElement('audio'); 
     audioElement.setAttribute('src', '/assets/music/sound_file.mp3'); 
     audioElement.setAttribute('autoplay', 'autoplay'); 
     audioElement.load(); 
     audioElement.play(); 
    } 
</script> 
+0

感谢thins,我尝试过,但仍然没有音频文件正在播放。 – 2013-03-28 00:04:55

+0

@JamesPale我尝试过,绝对有效。检查你的路径是否正确。 – 2013-03-28 00:05:18

+0

什么也没有发生,只是没有声音播放,没有任何错误。 – 2013-03-28 00:07:05

1

按照问题:

我有出现一个信息提示框,当用户得到一个新的 消息,我想要做的是当它弹出时向此盒子添加声音

您已经拥有某种JavaScript功能,可以在需要时显示警告框。使用this answer中的信息来播放声音。

<audio id="soundHandle" style="display: none;"></audio> 
<script> 
    soundHandle = document.getElementById('soundHandle'); 
    soundHandle.src = '/assets/music/sound_file.mp3'; 
</script> 



//With your message alert function.... 
alert("Message box"); 
soundHandle.play();