Hexo 魔改(轻度) 音乐页-多个歌单切换
AI-摘要
切换
Tianli GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
Hexo 魔改(轻度) 音乐页-多个歌单切换
TONG HUI在配置中多加一个参数
1
2
3
4
5# 音乐配置项
nav_music:
enable: true
list:
-在 config.pug 中增加一个参数
1
2
3
4
5
6
7
8
9
10
11
12let music = 'undefined'
if (theme.nav_music.list.length > 0){
music = JSON.stringify({
musicId:theme.nav_music.list,
musicIndex:0,
musicServer:theme.nav_music.server
})
}
const GLOBAL_CONFIG = {
music: !{music},
}修改 utils.js 中和音乐相关的方法
- 找到 js 中的
getCustomPlayList 方法,大概在860行左右。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18getCustomPlayList: function () {
if (!window.location.pathname.startsWith("/music/")) {
return;
}
const urlParams = new URLSearchParams(window.location.search);
const userId = GLOBAL_CONFIG.music.musicId[GLOBAL_CONFIG.music.musicIndex];
const userServer = GLOBAL_CONFIG.music.musicServer;
const anMusicPageMeting = document.getElementById("anMusic-page-meting");
if (urlParams.get("id") && urlParams.get("server")) {
const id = urlParams.get("id");
const server = urlParams.get("server");
anMusicPageMeting.innerHTML = `<meting-js id="${id}" server=${server} type="playlist" type="playlist" mutex="true" preload="auto" theme="var(--anzhiyu-main)" order="list" list-max-height="calc(100vh - 169px)!important"></meting-js>`;
} else {
anMusicPageMeting.innerHTML = `<meting-js id="${userId}" server="${userServer}" type="playlist" mutex="true" preload="auto" theme="var(--anzhiyu-main)" order="list" list-max-height="calc(100vh - 169px)!important"></meting-js>`;
}
anzhiyu.changeMusicBg(false);
anzhiyu.monitorMusicChange();
} - 找到 js 中的
changeMusicList 方法,大概在1000行左右。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25changeMusicList: async function () {
if (GLOBAL_CONFIG.music.musicIndex == GLOBAL_CONFIG.music.musicId.length){
GLOBAL_CONFIG.music.musicIndex = 0;
}else {
GLOBAL_CONFIG.music.musicIndex++;
}
const id = GLOBAL_CONFIG.music.musicId[GLOBAL_CONFIG.music.musicIndex];
const anMusicPageMeting = document.getElementById("anMusic-page-meting");
anMusicPageMeting.innerHTML = "";
anMusicPageMeting.innerHTML = `<meting-js id="${id}" server="${musicServer}" type="playlist" mutex="true" preload="auto" theme="var(--anzhiyu-main)" order="list" list-max-height="calc(100vh - 169px)!important"></meting-js>`;
// 切换歌单确保歌单加载完成
let timer = setInterval(() => {
const anMusicPage = document.getElementById("anMusic-page");
const metingAplayer = anMusicPage.querySelector("meting-js").aplayer;
// 确保player加载完成
if (metingAplayer) {
clearInterval(timer);
defaultPlayMusicList = metingAplayer.list.audios;
anzhiyu.changeMusicBg(true);
anzhiyu.monitorMusicChange();
}
}, 100);
} - 监听歌曲的切换
这是为了实现切换歌曲,背景进行改变。注:在初始化歌单时,可以实现背景随歌曲的变化而变化。如果切换歌单后,下面的方法就报错。
希望大佬指导一下。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18musicObserver:null,
//监听音乐的切换
monitorMusicChange:function (){
// 选择需要观察变动的节点
let page = document.getElementById("anMusic-page")
const targetNode =page.getElementsByClassName("aplayer-pic");
// 观察器的配置(需要观察什么变动)
const config = { subtree: true,attributeFilter:['style'] };
// 当观察到变动时执行的回调函数
const callback = function(mutationsList, observer) {
anzhiyu.changeMusicBg(true);
};
// 创建一个观察器实例并传入回调函数
anzhiyu.musicObserver = new MutationObserver(callback);
// 以上述配置开始观察目标节点
anzhiyu.musicObserver.observe(targetNode, config);
}
- 找到 js 中的
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果