fix(tracker): хук на боковую панель-справочник (.tab[data-tab=refN])

Chemistry-9 и physics-9 имеют ДВА навигатора:
1. .para-pill[data-para=pN] — верхние пилюли с большими карточками
2. .tab[data-tab=refN]      — sidebar-справочник, тонкие строки слева

Ученик кликал именно по второму (§46 Mg и ЩЗМ), но tracker
ловил только первый. Маппинг ref<N> → p<N> по регексу.

Capture-фаза, чтобы не зависеть от bubble.
This commit is contained in:
Maxim Dolgolyov
2026-05-27 17:56:54 +03:00
parent 1b07f086b4
commit 908e7f3f1c
+11
View File
@@ -307,6 +307,17 @@
if (typeof window.setParaTab === 'function' && window.setParaTab.__tbPatched) clearInterval(ivl);
if (++tries > 20) clearInterval(ivl);
}, 100);
// Hook 4b: боковая панель-справочник в chemistry-9 / physics-9 использует
// .tab[data-tab="refN"] вместо .para-pill. Маппим ref<N> → p<N> и фиксируем.
document.addEventListener('click', e => {
const tab = e.target && e.target.closest && e.target.closest('.tab[data-tab]');
if (!tab) return;
const m = String(tab.dataset.tab || '').match(/^ref(\d+)$/);
if (!m) return;
const para = 'p' + m[1];
console.log('[tracker] клик по справ. табу', tab.dataset.tab, '→', para);
recordParaVisit(para);
}, true);
// Hook 4: polling — наблюдаем за классом .active на пилюлях.
// Если кто-то поменял активный параграф (через клик, через JS вызов
// setParaTab, через любой механизм) — мы это поймаем за 500мс и зафиксируем.