Changeset a8364ee in Klonkt for src/assets/js/mod/news.js
- Timestamp:
- 08/07/2026 06:47:45 PM (5 weeks ago)
- Branches:
- main
- Children:
- 3ca7bdf, a39c9bd
- Parents:
- da84110
- git-author:
- Robin <roboburr@…> (08/07/2026 06:47:02 PM)
- git-committer:
- Robin <roboburr@…> (08/07/2026 06:47:45 PM)
- File:
-
- 1 edited
-
src/assets/js/mod/news.js (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/assets/js/mod/news.js
rda84110 ra8364ee 6 6 7 7 import { pageData } from './lib.js'; 8 9 // De twee gedelegeerde blokken dragen een window-vlag en zijn bij een tweede 10 // init een no-op; de twee SCANNERS (gif-video's, lees-meer) moeten juist wel 11 // elke render opnieuw over de verse elementen lopen (shaer-5s1). Element- 12 // vlaggen (data-gif-wired, data-rm) houden dubbel bedraden tegen. 13 export function init() { run(); } 14 15 function run() { 8 16 9 17 (function () { … … 77 85 /* Short feed videos (gif/cover loops like an animated cover) autoplay + loop muted like a GIF; 78 86 longer real videos keep their controls. Decided on the actual duration once metadata loads. */ 79 (function(){ 80 document.querySelectorAll('.tl-media-video').forEach(function(v){ 81 if (v.dataset.gifWired) return; v.dataset.gifWired = '1'; 82 var decide = function(){ 83 if (v.duration && v.duration <= 30) { 84 v.removeAttribute('controls'); v.loop = true; v.muted = true; v.play().catch(function(){}); 85 } 86 }; 87 if (v.readyState >= 1) decide(); else v.addEventListener('loadedmetadata', decide, { once: true }); 88 }); 89 })(); 87 wireGifVideos(); 90 88 91 89 /* Like/Boost toggle in place — POST via fetch, flip the button, stay on the page (no reload, no banner). */ … … 113 111 // actually overflows. Runs on every /news render (full load + htmx swap); a per-element flag 114 112 // prevents double-wiring. 115 (function(){ 113 wireReadMore(); 114 } 115 116 /* Short feed videos: zie de opmerking bij de aanroep in run(). */ 117 function wireGifVideos(){ 118 document.querySelectorAll('.tl-media-video').forEach(function(v){ 119 if (v.dataset.gifWired) return; v.dataset.gifWired = '1'; 120 var decide = function(){ 121 if (v.duration && v.duration <= 30) { 122 v.removeAttribute('controls'); v.loop = true; v.muted = true; v.play().catch(function(){}); 123 } 124 }; 125 if (v.readyState >= 1) decide(); else v.addEventListener('loadedmetadata', decide, { once: true }); 126 }); 127 } 128 129 function wireReadMore(){ 116 130 var _d = pageData(); var RM = _d.readMore || 'Lees meer', SL = _d.showLess || 'Toon minder'; 117 131 document.querySelectorAll('.tl-content:not(.nsfw-media):not([data-rm])').forEach(function(c){ … … 127 141 } 128 142 }); 129 })(); 143 } 144 145 // Paginering: items die de feed later binnenhaalt zouden de scanners missen -- 146 // init() draait per NAVIGATIE, en een pagineer-swap is er geen. Een keer, 147 // gedelegeerd; op andere pagina's vinden de scanners niets en doen ze niets. 148 document.body.addEventListener('htmx:afterSettle', function () { wireGifVideos(); wireReadMore(); });
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)