本文实例讲述了jquery控制背景音乐开关与自动播放提示音的方法。分享给大家供大家参考。具体如下:
很多人初学网页制作时在网页中加入一段背景音乐,听到音乐响起的那一刻往往都会有一丝的成就感。
这里就为大家讲解如何使用js控制背景音乐播放与停止。具体如下:
一、jquery控制背景音乐开关
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" >
<head>
<script src=\"js/jquery.min.js\"></script>
<script type=\"text/javascript\">
//加载背景音乐,并自动播放
$(\'#bg_music\').append(\'<embed id=\"m_bg_music\" loop=true volume=\"60\" autostart=true hidden=true src=\"guoan.mp3\" />\');
$(\'#bg_music_btn\').click(function(){
var state = $(\'#bg_music_btn\').attr(\'state\');
if(state == \'1\')//
{
$(\'#bg_music_btn\').attr(\'state\',\'0\');
$(\'#bg_music_btn\').html(\'打开背景音乐\');
$(\'#m_bg_music\').remove();
}else if(state == \'0\')
{
$(\'#bg_music_btn\').attr(\'state\',\'1\');
$(\'#m_bg_music\').remove();
$(\'#bg_music_btn\').html(\'关闭背景音乐\');
$(\'#bg_music\').append(\'<embed id=\"m_bg_music\" loop=true volume=\"60\" autostart=true hidden=true src=\"guoan.mp3\" />\');
}
});
</script>
</head>
<body>
<!--控制播放-->
<div id=\"bg_music_btn\" state=\'1\'>关闭背景音乐</div>
<!--背景音乐-->
<div id=\"bg_music\"></div>
</body>
</html>
以上介绍了jquery如何控制背景音乐开关的方法,接下来再进一步扩展。
二、JQuery自动播放提示音
最早对网站有自动提示音的功能,发现在Discuz论坛中出现。但是它有一个问题就是只支持flash,不支持HTML5,不明确最新版本中是否支持HTML5。
对于Discuz 7.2 版本中,提供了player.swf、pm_1.mp3、pm_2.mp3、pm_3.mp3,然后使用如下脚本来实现:
<div id=\"soundplayerlayer\" style=\"position:absolute;top:-100000px\"></div>
<script type=\"text/javascript\" reload=\"1\">
function soundplayer(file) {
$(\'soundplayerlayer\').innerHTML = AC_FL_RunContent(\'id\', \'pmsoundplayer\', \'name\', \'pmsoundplayer\', \'width\', \'0′, \'height\', \'0′, \'src\', \'{$boardurl}images/sound/player.swf\', \'FlashVars\', \'sFile={$boardurl}images/sound/pm_\' + file + \'.mp3′, \'menu\', \'false\', \'allowScriptAccess\', \'sameDomain\', \'swLiveConnect\', \'true\');
}
</script>
可惜这个方法局限在flash,在苹果设备上可能就会遇到麻烦了。
HTML5开源播放器JPlayer支持自动播放提示音
JPlayer支持play事件触发自动播放提示音。
1. 装载JPlayer到一个div层,例如#jplayer。
$(function() {
$(\"#jplayer\").jPlayer({
swfPath: \"http://www.jplayer.org/latest/js/Jplayer.swf\",
ready: function () {
$(this).jPlayer(\"setMedia\", {
mp3: \"./resources/message.mp3\"
});
},
supplied: \"mp3\"
});
});
body部分加入:<div id=\"jplayer\"></div>
装载JQuery完成后,jplayer的div内容在支持swf的浏览器内变成:
<div id=\"jplayer\" style=\"width: 0px; height: 0px;\"><img id=\"jp_poster_0\" style=\"width: 0px; height: 0px; display: none;\"><object height=\"1\" width=\"1\" id=\"jp_flash_0\" data=\"http://www.jplayer.org/latest/js/Jplayer.swf\" type=\"application/x-shockwave-flash\" style=\"width: 0px; height: 0px;\"><param name=\"flashvars\" value=\"jQuery=jQuery&id=jplayer&vol=0.8&muted=false\"><param name=\"allowscriptaccess\" value=\"always\"><param name=\"bgcolor\" value=\"#000000\"><param name=\"wmode\" value=\"opaque\"></object></div>
在支持HTML5的浏览器内变成:
<div id=\"jplayer\" style=\"width: 0px; height: 0px;\"><img id=\"jp_poster_0\" style=\"width: 0px; height: 0px; display: none;\"><audio id=\"jp_audio_0\" preload=\"metadata\" src=\"./resources/message.mp3\"></audio></div>
完成装载后就是触发播放的事件了。
2. 触发播放提示音事件
$(\"#jplayer\").jPlayer(\'play\');
3. 循环播放函数,每5秒播放一次提示音
function PlaySound() {
$(\"#jplayer\").jPlayer(\'play\');
setInterval(\"PlaySound()\", 5000);
return true;
}
附录:
1. 解决无法自动播放提示音的问题
如果在加载JQplayer后,立刻运行播放的触发事件,没有任何效果!具体是什么原因我也不太清楚,估计是因为音频文件没有加载上。
2. 解决方法是让触发事件等待5秒中执行。
setTimeout(\"$(\'#jplayer\').jPlayer(\'play\')\", 5000);
加载完页面,5秒后自动播放提示音。
希望本文所述对大家的jquery程序设计有所帮助。