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的$.cookie()实现跨越页面tabs导航实现代码
Mar 03 Javascript
jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例
Aug 22 Javascript
jQuery插件Validate实现自定义校验结果样式
Jan 18 Javascript
Angularjs实现搜索关键字高亮显示效果
Jan 17 Javascript
Vue 2.x教程之基础API
Mar 06 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
Dec 01 Javascript
js自定义input文件上传样式
Oct 26 Javascript
jquery实现掷骰子小游戏
Oct 24 jQuery
使用Node.js实现base64和png文件相互转换的方法
Mar 11 Javascript
小程序中的箭头函数的具体使用
Jun 19 Javascript
vue和H5 draggable实现拖拽并替换效果
Jul 29 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
Sep 24 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
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
Javascript----文件操作
2007/01/18 Javascript
jquery 简单导航实现代码
2009/09/11 Javascript
分享一个asp.net pager分页控件
2012/01/04 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
用JS实现3D球状标签云示例代码
2013/12/01 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
jQuery实现表单步骤流程导航代码分享
2015/08/28 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
基于Bootstrap分页的实例讲解(必看篇)
2017/07/04 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
python使用any判断一个对象是否为空的方法
2014/11/19 Python
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
Pycharm激活方法及详细教程(详细且实用)
2020/05/12 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
详解Python中第三方库Faker
2020/09/25 Python
2014春晚主持词
2014/03/25 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
世界文化遗产导游词
2015/02/13 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
班干部竞选演讲稿(精选5篇)
2019/09/24 职场文书
2021年pycharm的最新安装教程及基本使用图文详解
2021/04/03 Python
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
关于Vue中的options选项
2022/03/22 Vue.js