diff options
| author | Eltrac <hi@guhub.cn> | 2025-07-14 19:26:28 +0800 |
|---|---|---|
| committer | Eltrac <hi@guhub.cn> | 2025-07-14 19:26:28 +0800 |
| commit | a75b52700c47c4393e0ca4272d7a5a917972544f (patch) | |
| tree | 07a4801791db7d6a4670d53411f0689ec0090bfe /layouts/_partials/scripts.html | |
| parent | 3cb68b6d5231ac9932b521dee767aae19ae1ca60 (diff) | |
refactor: clearer division of each partial and better folder structure
Former-commit-id: 29af8b6c2bd89c1966512b4305af345b8ee1ef82
Diffstat (limited to 'layouts/_partials/scripts.html')
| -rw-r--r-- | layouts/_partials/scripts.html | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/layouts/_partials/scripts.html b/layouts/_partials/scripts.html new file mode 100644 index 00000000..12beca10 --- /dev/null +++ b/layouts/_partials/scripts.html @@ -0,0 +1,67 @@ +<!-- third-party libraries --> +{{- range .Site.Params.externalJSFiles }} + <script src="{{ $.Site.Params.staticPrefix }}{{ . | relURL }}"></script> +{{- end }} + +{{- if or (in .Section "posts") (in .Section "cards") (in .Section "library") (eq .Type "single") }} + <script src="/js/fancybox.umd.js"></script> + <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, + activateOnHover: true + }); +</script> |
