diff options
| author | Eltrac <hi@guhub.cn> | 2025-07-18 18:46:45 +0800 |
|---|---|---|
| committer | Eltrac <hi@guhub.cn> | 2025-07-18 18:46:45 +0800 |
| commit | 70cfd74bcfab6a74dd9755c1946109e6576158a8 (patch) | |
| tree | 83d44f5645e49d3bfc948d0aa0ecc399c4fe3cab /layouts/_partials/scripts.html | |
| parent | 9bea54b8d6e25b2c194e8555210fb6df16e3c851 (diff) | |
refactor: make partials of all embeded JavaScript code
Diffstat (limited to 'layouts/_partials/scripts.html')
| -rw-r--r-- | layouts/_partials/scripts.html | 67 |
1 files changed, 4 insertions, 63 deletions
diff --git a/layouts/_partials/scripts.html b/layouts/_partials/scripts.html index 12beca10..ac62974b 100644 --- a/layouts/_partials/scripts.html +++ b/layouts/_partials/scripts.html @@ -1,67 +1,8 @@ -<!-- 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> +{{ partial "scripts/toc-js" . }} +{{ partial "scripts/littlefoot-js" . }} +{{ partial "scripts/fancybox-js" . }} +{{ partial "scripts/aplayer-js" . }} |
