JavaScript实现简单的音乐播放器


Posted in Javascript onAugust 14, 2022

本文实例为大家分享了JavaScript实现简单音乐播放器的具体代码,供大家参考,具体内容如下

主要功能:快进、快退、暂停、上下一首、禁音、鼠标控制音量、自动下一首、显示歌名

<html>
<head>
    @*不提供音频*@
    <meta name="viewport" content="width=device-width" />
    <title>ceshi14</title>
</head>
<body>
    <div id="name">
    </div>
    <div> 
        <audio id="yinp"   controls="controls"autoplay="autoplay" >
            <source id="ss" src="~/images/Beautiful%20In%20White.mp3" type="audio/mpeg" />
        </audio>
    </div>
    <script>
        //在谷歌浏览器输入  chrome://flags/#autoplay-policy 
        // 第一个选项 Autoplay policy  设置为 no user gesture is required  :谷歌浏览器要调 才可以自动播放
        var i = 0;
        var shu = ['/images/Beautiful In White.mp3', '/images/%e6%b1%aa%e8%8b%8f%e6%b3%b7%20-%20%e5%b9%b4%e8%bd%ae.mp3','/images/%e9%99%88%e6%9f%8f%e5%ae%87%20-%20%e4%bd%a0%e7%9e%92%e6%88%91%e7%9e%92.mp3','/images/%e8%83%a1%e6%ad%8c%20-%20%e5%bf%98%e8%ae%b0%e6%97%b6%e9%97%b4.mp3','/images/%e5%8d%97%e5%be%81%e5%8c%97%e6%88%98%20-%20%e6%88%91%e7%9a%84%e5%a4%a9%e7%a9%ba.mp3','/images/%e5%91%a8%e6%9d%b0%e4%bc%a6%20-%20%e5%91%8a%e7%99%bd%e6%b0%94%e7%90%83.mp3','/images/%e8%83%a1%e5%a4%8f%20-%20%e5%90%8c%e6%a1%8c%e7%9a%84%e4%bd%a0.mp3'];//音频路径(转码)

        //控制播放 currentTime
        window.onkeydown = function (event) {
            var yinp = document.getElementById('yinp');
            if (event.keyCode == 32) {//空格控制播放
                if (yinp.paused) {//判断音频是否暂停
                    yinp.play();
                } else {
                    yinp.pause();
                }
            }
            if (event.keyCode == 13) {//回车控制是否禁音
                if (yinp.muted) {
                    yinp.muted = false;
                } else {
                    yinp.muted = true;
                }
            }

            if (event.keyCode == 27) {//Esc键关闭
                window.close();
            }

            if (event.keyCode == 39) {//右方向键快进
                yinp.pause();
                if (yinp.currentTime < yinp.duration-5) {//duration:音频总长度   currentTime:音频当前进度(当前长度)
                    yinp.currentTime += 1
                }             
            }

            if (event.keyCode == 37) {//左方向键快退
                yinp.pause();
                if (yinp.currentTime>1) {
                    yinp.currentTime -= 1
                }               
            }

            if (event.keyCode == 38) {//上方向键:上一曲(第一曲没作用)
                yinp.pause();
                if (i>0) {
                    i--;
                } else {
                    i = 0;
                }
                yinp.load();
                document.getElementById('ss').src = '' + shu[i] + '';
            }           
        
            if (event.keyCode == 40) {//下方向键:下一曲
                yinp.pause();
                if ((i + 1) == shu.length) {
                    i = 0;
                } else {
                    i++;
                }
                yinp.load();
                document.getElementById('ss').src = '' + shu[i] + '';
            }
        };
        //按键松开时播放
        window.onkeyup = function (event) {
            var yinp = document.getElementById('yinp');
            if (event.keyCode == 39) {
                yinp.play();
            }
            if (event.keyCode == 37) {
                yinp.play();
            }
            if (event.keyCode == 38) {
                yinp.play();
            }
            if (event.keyCode == 40) {
                yinp.play();
            }
        }

       //鼠标滚轮改变音量大小
        window.onwheel = function (event) {
            var yinp = document.getElementById('yinp');
            var pan = 0;
            if (event.wheelDelta) {            
                 pan = ((event.wheelDelta / 150) * 0.01).toFixed(2);              
            }
            if (event.detail) {
                pan = ((-event.detail / 3 ) * 0.01).toFixed(2);
            }
            var volume = Number((yinp.volume).toFixed(2));
            if (volume + Number(pan) > 1 || volume + Number(pan) < 0) {

            } else {
                yinp.volume = volume + Number(pan);
            }
        }
        
        function gename() {//歌名
            var name = document.getElementById('name');
            var s = decodeURI(shu[i])//解码
            var pp = /([^\\/]+)\.([^\\/]+)/i;//正则匹配歌名
            pp.test(s);
            name.innerHTML = RegExp.$1;
        }
      
        var yinp = document.getElementById('yinp');
        yinp.onplay = gename;//播放时显示歌名
        yinp.onended = function () {//结束时自动下一曲
            if ((i+1)==shu.length) {
                i = 0;
            } else {
                i++;
            }
            yinp.load();//重新加载
            document.getElementById('ss').src = '' + shu[i] + '';//更换音频路径
        }
    </script>
</body>
</html>

效果图:

JavaScript实现简单的音乐播放器

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
document.open() 与 document.write()的区别
Aug 13 Javascript
js 实现无缝滚动 兼容IE和FF
Jul 15 Javascript
替代window.event.srcElement效果的可兼容性的函数
Dec 18 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
May 31 Javascript
分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
Oct 12 Javascript
输入密码检测大写是否锁定js实现代码
Dec 03 Javascript
DropDownList实现可输入可选择(两种版本可选)
Dec 07 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
webpack配置导致字体图标无法显示的解决方法
Mar 06 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
Feb 24 Javascript
微信小程序实现下滑到底部自动翻页功能
Mar 07 Javascript
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
vue实现简易音乐播放器
Aug 14 #Vue.js
Vue3实现简易音乐播放器组件
Aug 14 #Vue.js
element tree树形组件回显数据问题解决
Aug 14 #Javascript
el-table-column 内容不自动换行的解决方法
Aug 14 #Vue.js
JavaScript实现音乐播放器
vue el-table实现递归嵌套的示例代码
Aug 14 #Vue.js
vue实现input输入模糊查询的三种方式
Aug 14 #Vue.js
You might like
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
那些年一起学习的PHP(二)
2012/03/21 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
自适应图片大小的弹出窗口
2006/07/27 Javascript
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
javascript ie6兼容position:fixed实现思路
2013/04/01 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
2020/07/17 Javascript
一个简单的python程序实例(通讯录)
2013/11/29 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
python 三种方法提取pdf中的图片
2021/02/07 Python
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
西岭雪山导游词
2015/02/06 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
Python进行区间取值案例讲解
2021/08/02 Python