diff options
| author | Eltrac <hi@guhub.cn> | 2025-06-06 09:00:36 +0800 |
|---|---|---|
| committer | Eltrac <hi@guhub.cn> | 2025-06-06 09:00:36 +0800 |
| commit | 8397b55040d23c19c7e6aae30badc55e54319bf2 (patch) | |
| tree | a57dffcfc208ff85e2af1422f61f67f3d045dfb2 /layouts/partials/scripts.html | |
| parent | 87761df9fde0885d64a4eb853c18245ca0779ce3 (diff) | |
| parent | 227fb4cb419a44132340963f78147e8df604a0ee (diff) | |
Merge branch 'master' of https://github.com/BigCoke233/geek-death-project
Former-commit-id: 430926459e4846549b1571c460e2596874663c1b
Diffstat (limited to 'layouts/partials/scripts.html')
| -rw-r--r-- | layouts/partials/scripts.html | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/layouts/partials/scripts.html b/layouts/partials/scripts.html index 308038ff..12beca10 100644 --- a/layouts/partials/scripts.html +++ b/layouts/partials/scripts.html @@ -8,6 +8,57 @@ <script>Fancybox.bind("[data-fancybox]");</script> {{- end }} +{{ if .Params.aplayer }} +<script> +document.addEventListener("DOMContentLoaded", function () { + const lazyPlayers = document.querySelectorAll(".lazy-aplayer"); + if (!lazyPlayers.length) return; + + const loadAPlayer = () => { + if (window.APlayer) return Promise.resolve(); + return new Promise((resolve, reject) => { + const script = document.createElement('script'); + script.src = "https://unpkg.com/aplayer@1.10.1/dist/APlayer.min.js"; + script.onload = resolve; + script.onerror = reject; + document.body.appendChild(script); + }); + }; + + const observer = new IntersectionObserver((entries, obs) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + loadAPlayer().then(() => { + const el = entry.target; + const id = el.dataset.id ? `-` + el.dataset.id : ``; + const container = document.createElement('div'); + container.id = `aplayer${id}`; + el.appendChild(container); + + const ap = new APlayer({ + container: container, + audio: [{ + name: el.dataset.name, + artist: el.dataset.artist, + url: el.dataset.url, + cover: el.dataset.cover + }] + }); + + ap.on('play', () => umami?.track?.('🎵 Play music with aPlayer')); + ap.on('ended', () => umami?.track?.('🎵 Played entiresong with aPlayer')); + + obs.unobserve(el); + }); + } + }); + }); + + lazyPlayers.forEach(player => observer.observe(player)); +}); +</script> +{{ end }} + <script> littlefoot.littlefoot({ dismissOnUnhover: true, |
