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 相关文章推荐
IE8下关于querySelectorAll()的问题
May 13 Javascript
jquery数组之存放checkbox全选值示例代码
Dec 20 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
Nov 28 Javascript
jquery+json实现动态商品内容展示的方法
Jan 14 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
Mar 03 Javascript
jQuery插件echarts去掉垂直网格线用法示例
Mar 03 Javascript
vue.js从安装到搭建过程详解
Mar 17 Javascript
详解angularJs中关于ng-class的三种使用方式说明
Jun 02 Javascript
浅谈JS中的常用选择器及属性、方法的调用
Jul 28 Javascript
Webpack优化配置缩小文件搜索范围
Dec 25 Javascript
详解JavaScript添加给定的标签选项
Sep 17 Javascript
vue+elementui 实现新增和修改共用一个弹框的完整代码
Jun 08 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
php实现xml转换数组的方法示例
2017/02/03 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
web 页面分页打印的实现
2009/06/22 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
Knockoutjs快速入门(经典)
2012/12/24 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
Javascrip实现文字跳动特效
2016/11/27 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
JavaScript你不知道的一些数组方法
2017/08/18 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
vue使用svg文件补充-svg放大缩小操作(使用d3.js)
2020/09/22 Javascript
[15:15]教你分分钟做大人:狙击手
2014/10/30 DOTA
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
个人教师自我评价范文
2013/12/02 职场文书
八年级历史教学反思
2014/01/10 职场文书
决心书标准格式
2014/03/11 职场文书
大学校务公开实施方案
2014/03/31 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
门球健将观后感
2015/06/16 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js