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 相关文章推荐
Javascript 判断函数类型完美解决方案
Sep 02 Javascript
jQuery 开发者应该注意的9个错误
May 03 Javascript
JS判断变量是否为空判断是否null
Jul 25 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
Jan 09 Javascript
jQuery实现数秒后自动提交form的方法
Mar 05 Javascript
JavaScript获取表单enctype属性的方法
Apr 02 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
Aug 01 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
Jul 24 Javascript
详解JS中的柯里化(currying)
Aug 17 Javascript
基于js中document.cookie全面解析
Sep 14 Javascript
发布一款npm包帮助理解npm的使用
Jan 03 Javascript
Vue.js实现立体计算器
Feb 22 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
ftp类(myftp.php)
2006/10/09 PHP
PHP Ajax JavaScript Json获取天气信息实现代码
2016/08/17 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
2013/01/08 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
2017/09/07 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
vue实现购物车案例
2020/05/30 Javascript
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
python DataFrame 取差集实例
2019/01/30 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
学习Python列表的基础知识汇总
2020/03/10 Python
Python 中如何使用 virtualenv 管理虚拟环境
2021/01/21 Python
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
能源工程专业应届生求职信
2014/03/01 职场文书
主办会计岗位职责
2014/03/13 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
高中运动会广播稿
2014/09/16 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
mysql优化
2021/04/06 MySQL
MySQL 如何设计统计数据表
2021/06/15 MySQL
Nginx动静分离配置实现与说明
2022/04/07 Servers