fix(tracker): 4-й хук — polling по .para-pill.active
Если ни bubble, ни capture, ни setParaTab-patch не сработали (например, страница использует другой механизм навигации), наблюдаем DOM раз в 500мс на изменение класса .active у пилюли. Когда активная пилюля меняется — фиксируем визит. Это самый robust способ: работает независимо от событий, функций и библиотек страницы. Стоит копейки — один querySelector в 500мс.
This commit is contained in:
@@ -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) ─────── */
|
||||
|
||||
Reference in New Issue
Block a user