js实现音频播放

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title></title>
	<script type="text/javascript" src="jquery.min.js"></script>
	<style type="text/css">
		body{
			margin: 0;
			padding:0;
		}
		.boxlist{
			margin: 0 auto;
			width: 100vm;
			height: 100vh;
		}
		button{
			width: 100%;
			height: 25%;
			margin: 0 auto;
			font-size:0.9rem;
			background: #669ae3;
			color:#fff;
		}
		.clicked{
			background-color: #c5aa4e;
			color: #520126;
		}
	</style>
</head>
<script type="text/javascript">

(function (doc, win) {
      var docEl = doc.documentElement,
        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
        recalc = function () {
          var clientWidth = docEl.clientWidth;
          if (!clientWidth) return;
          docEl.style.fontSize = 100* (clientWidth / 1080) + 'px';
        };
      if (!doc.addEventListener) return;
      win.addEventListener(resizeEvt, recalc, false);
      doc.addEventListener('DOMContentLoaded', recalc, false);
    })(document, window);
</script>
<body>
	<div class="boxlist">
		<button onclick="music(1)" id="btn1">章贡谣</button>
		<button onclick="music(2)" id="btn2">最美的相遇</button>
		<button onclick="music(3)" id="btn3">大美宋城看章贡</button>
		<button onclick="music(4)" id="btn4">等你来</button>
	</div>
	<script type="text/javascript">
	  	var audio;
		function music(i){
			if(audio){
				 audio.pause(); // 切换的时候先暂停其他的
			}
			audio = i+".mp3";
         	audio = new Audio(audio); 
         // 	// 循环播放,播放结束继续播放
	        $(audio).unbind("ended").bind("ended", function(){
	               audio.play();
	        })
	        $("#btn"+i).addClass("clicked").siblings().removeClass("clicked");
	        audio.play();
		}
		
	</script>
</body>
</html>

从实现这个功能的同时,了解到html5对audio和video的autoplay不在支持,如果调用play()会报如下错

Uncaught(in promise)DOMException

监听音乐播放完毕事件

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>audio监听播放完毕</title>
</head>
<body>

<audio src="1.mp3" id="audio" controls="true" autoplay="true">
  <!-- <source src="1.mp3" type="audio/mpeg"> -->
  Your browser does not support the audio element.
</audio>
<script>
    var audio = document.getElementById("audio"); 
    audio.loop = false;
    audio.addEventListener('ended', function () {  
        alert('over');
    }, false);
</script> 
</body>
</html>

要实现自动循环播放,暂时没有找到相关方法,因为autoplay这条路不行了。
通过点击一个,其他顺序播放倒是可以实现。

<body>
	<audio controls="controls" autoplay="autoplay" id="audio" src="1.mp3"></audio>
	<script type="text/javascript">
		var i = 0;
		var audios=[,"2.mp3","3.mp3","4.mp3"];
		document.getElementById("audio").onended = function(){
		    if(audios[i]){
		        this.setAttribute('src',audios[i]);i++;
		    }else{
		        alert('没有音乐了');
		    }
		};
	</script>
</body>

查阅网上相关资料,博客地址 https://www.jb51.net/article/80602.htm

只支持在IE浏览器播放,而且发现播放时长一直是00:00,有时间的话再去改进下这个js。虽然说在谷歌中需要根据浏览器改写 window.attachEvent 时间,用addEventListener,但是还是无效。

if (window.attachEvent) {

  window.attachEvent("onload", foo);

} else if (window.addEventListener) {

  window.addEventListener("load", foo, false);

}

弄完之后,放到外网,配置个nginx,再制作一个二维码,扫码听歌哈哈。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章