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 相关文章推荐
在jquery boxy中添加百度地图坐标拾取注意流程
Apr 03 Javascript
jquery JSON的解析方式示例介绍
Jul 27 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
Jul 02 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
Aug 08 Javascript
HTML5 实现的一个俄罗斯方块实例代码
Sep 19 Javascript
Vue结合原生js实现自定义组件自动生成示例
Jan 21 Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
Jul 13 Javascript
浅谈node中的cluster集群
Jun 02 Javascript
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
Sep 17 Javascript
Vue3 中的数据侦测的实现
Oct 09 Javascript
原生js实现下拉框选择组件
Jan 20 Javascript
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
PL-880隐藏功能
2021/03/01 无线电
访问编码后的中文URL返回404错误的解决方法
2014/08/20 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
thinkphp关于简单的权限判定方法
2017/04/03 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
javascript高级学习笔记整理
2011/08/14 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
JavaScript中诡异的delete操作符
2015/03/12 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
python实现简易内存监控
2018/06/21 Python
python简单操作excle的方法
2018/09/12 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
详解Django将秒转换为xx天xx时xx分
2019/09/27 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
html Table 表头固定的实现
2019/01/22 HTML / CSS
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
2014年“四风”问题个人整改措施
2014/09/17 职场文书
2014年党支部工作总结
2014/11/13 职场文书
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS
Linux安装Docker详细教程
2022/07/07 Servers
MySQL索引失效场景及解决方案
2022/07/23 MySQL