简单模拟一个音乐播放器,音乐正常的播放功能兼容到IE9,IE8就挂掉了,谷歌,火狐,欧朋,Edge,360测试正常,IE下input样式待优化,希望大家提点建议。
参考效果网站:http://www.taihe.com/music
预览地址:http://www.bright2017.top/musicaudio/
Github下载地址:https://github.com/struggle20160730/musicaudio.git
(作为一个拿来主义者,我深知上源码的重要意义。跪求亲们给个star!!!)
大致思路:
因为audio标签自带的样式不太符合项目需求,需要改为自定义样式,但是功能还是用的标签自带。
主要通过获取audio标签的几个属性,audio的音量,音频播放时长,播放与暂停。
通过js触发事件后重新设置audio的音频路径src即可。
用到的属性和方法:
var audio = document.getElementById('music1');//获取audio标签的ID
audio.play();// 播放
audio.pause();// 暂停
audio.addEventListener("timeupdate",function(){//获取实时播放秒数
console.log("当前播放时间",this.currentTime);
});
audio.onended = function() {//音频播放结束触发的函数
console.log("音频已播放完成");
};
audio.volume = 0;//设置音量为0就是静音,设置1就是最大音量,音量范围是0---1。
audio.currentTime = 0;//就是设置当前播放时间,播放时间秒数为0就是重新播放,设置200就是播放时间到200秒的时候。
audio.duration;//获取当前音频的总时长,总共多少秒,不过一般获取的时候容易拿到NAN。
这是写好的方法,可以获取准确时间。
function SounMusicTime() {
setTimeout(function () {
var duration = document.getElementById("music1").duration;
if(isNaN(duration)){
SounMusicTime();
}
else{
var Val=s_to_hs(duration).substring(0,5);//截取字符串,保留整数位。
console.log("打印当前音频的秒数",Val);
}
}, 10);
}
函数s_to_hs(s):将秒转换为分钟,70秒转换为01:10。
function s_to_hs(s){
//计算分钟
//算法:将秒数除以60,然后下舍入,既得到分钟数
var h;
h = Math.floor(s/60);
//计算秒
//算法:取得秒%60的余数,既得到秒数
s = s%60;
//将变量转换为字符串
h += '';
s += '';
//如果只有一位数,前面增加一个0
h = (h.length==1)?'0'+h:h;
s = (s.length==1)?'0'+s:s;
return h+':'+s;
}
函数time_to_sec (time):将分秒转换为秒,04:10转换为250秒。
function time_to_sec (time) {
var s = '';
var min = time.split(':')[0];
var sec = time.split(':')[1];
s = Number(min*60) + Number(sec);
return s;
};