diff --git a/frontend/js/textbook-tracker.js b/frontend/js/textbook-tracker.js index 5148c5d..9f3e21a 100644 --- a/frontend/js/textbook-tracker.js +++ b/frontend/js/textbook-tracker.js @@ -283,6 +283,21 @@ if (typeof window.setParaTab === 'function' && window.setParaTab.__tbPatched) clearInterval(ivl); if (++tries > 20) clearInterval(ivl); }, 100); + // Hook 4: polling — наблюдаем за классом .active на пилюлях. + // Если кто-то поменял активный параграф (через клик, через JS вызов + // setParaTab, через любой механизм) — мы это поймаем за 500мс и зафиксируем. + // Самый robust способ; не зависит ни от событий, ни от наличия функций. + let lastActivePara = null; + setInterval(() => { + const active = document.querySelector('.para-pill.active[data-para]'); + if (!active) return; + const para = active.dataset.para; + if (para && para !== lastActivePara) { + if (lastActivePara !== null) console.log('[tracker] активный параграф изменился на', para); + lastActivePara = para; + recordParaVisit(para); + } + }, 500); } /* ── 8. Inject styling for read-pills (subtle green dot) ─────── */