10
2025
04
09:55:55

网站使用APlayer+MetingJS实现音乐播放 刷新页面保持音乐播放进度

APlayer是一个简约且漂亮的HTML5音乐播放器,支持多种模式,包括播放列表模式、吸底模式。

使用也很简单,只需要在页面内加上相关代码即可

详细使用说明见APlayer官方文档

但是如果只使用APlayer,你需要填写图片地址、mp3地址、歌词等,用起来极其麻烦。

于是Meting闪亮登场!

Meting为Aplayer提供了网易云音乐、QQ音乐、酷狗音乐等等的API接口。

大大提高了APlayer的易用性。

拿网易云音乐举例,只要获得网易云音乐歌单的ID,就可以自动加载歌单里所有的歌曲,直接调用,极其方便。

引入APlayer和MetingJS相关文件

<!-- require APlayer -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
<script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>
<!--require MetingJS -->
<script src="https://cdn.jsdelivr.net/npm/meting@2/dist/Meting.min.js"></script>

在需要显示播放器的位置插入以下代码

<meting-js
server="netease"
type="playlist"
id="60198"><!--此处更换为你的网易云歌单id-->
</meting-js>

然后就可以愉快的在网页中播放网易云歌单中的音乐了

关于MetingJS更多的参数可以查看 https://github.com/metowolf/MetingJS

本来到这里也就差不多了,但是页面切换的时候音乐就会播放停止,并且打开新页面后又从头开始播放,实在是有点不爽。

因为gebilaoli.com这个站点本来就是一个单页面,内容都是通过ZBlog的api调用,使用ajax无刷加载的,不存在页面切换的问题,但是如果手动刷新页面,音乐依旧又是从头开始,还是不太完美。

于是想能不能页面刷新或关闭前记录下音乐播放进度进度,下次加载网页时再自动读取。

于是一通搜索,找到了以下代码

<script>
    ap = null
    Object.defineProperty(document.querySelector('meting-js'),"aplayer",{
        set: function(aplayer) {
            ap=aplayer
            ready();
        }
    });
    isRecover = false;
    function ready(){
        ap.on('canplay', function () {
            if(!isRecover){
                if(localStorage.getItem("musicIndex") != null){
                    musicIndex = localStorage.getItem("musicIndex");
                    musicTime = localStorage.getItem("musicTime");
                    if(ap.list.index != musicIndex){
                        ap.list.switch(musicIndex);
                    }else{
                        ap.seek(musicTime);
                        ap.play();
                        localStorage.clear();
                        isRecover = true;
                    }
                }else{
                    isRecover = true;
                }
            }
        });
    }
    window.onbeforeunload = function(event) {
        if(!ap.audio.paused){
            musicIndex = ap.list.index;
            musicTime = ap.audio.currentTime;
            localStorage.setItem("musicIndex",musicIndex);
            localStorage.setItem("musicTime",musicTime);
        }
    };
</script>

问题完美解决。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://zblog.hqyman.cn/post/10319.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: