jquery控制背景音乐开关与自动播放提示音的方法教程
本文实例讲述了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>
<!--控制播放-->
<p id="bg_music_btn" state='1'>关闭背景音乐</p>
<!--背景音乐-->
<p id="bg_music"></p>
</body>
</html>
以上介绍了jquery如何控制背景音乐开关的方法,接下来再进一步扩展。
二、jquery自动播放提示音
最早对网站有自动提示音的功能,发现在discuz中出现。但是它有一个问题就是只支持flash,不支持html5,不明确最新版本中是否支持html5。
对于discuz 7.2 版本中,提供了player.swf、pm_1.mp3、pm_2.mp3、pm_3.mp3,然后使用如下脚本来实现:
代码如下:
<p id="soundplayerlayer" style="position:absolute;top:-100000px"></p>
<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到一个p层,例如#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部分加入:<p id="jplayer"></p>
装载jquery完成后,jplayer的p内容在支持swf的内变成:
代码如下:
<p 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></p>
在支持html5的浏览器内变成:
代码如下:
<p 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></p>
完成装载后就是触发播放的事件了。
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秒后自动播放提示音。