fix(phys9 legacy): null-guard в renderTask + try/catch вокруг инициализации
Ошибка: renderTask() падал на secций, отсутствующих на странице ch1
(нет элементов #sum<sec>, #taskArea<sec>, #fb<sec>) — getElementById
возвращал null, .classList.remove падал → IIFE прерывался → экспорт
функций в window не выполнялся → startAnim1 is not defined.
Фиксы:
1. renderTask: early return если area/fb/sum/pool/s — null.
2. Инициализационный forEach обёрнут в try/catch + per-item try/catch.
3. setParaTab('p1') и блок upd2..upd12 обёрнуты в try/catch
(некоторые элементы могут отсутствовать на отдельных ch-страницах).
Теперь экспорт функций гарантированно выполняется до конца файла.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -2737,7 +2737,9 @@ function renderTask(sec) {
|
|||||||
const s = STATE[sec];
|
const s = STATE[sec];
|
||||||
const area = document.getElementById('taskArea' + sec);
|
const area = document.getElementById('taskArea' + sec);
|
||||||
const fb = document.getElementById('fb' + sec);
|
const fb = document.getElementById('fb' + sec);
|
||||||
document.getElementById('sum' + sec).classList.remove('show');
|
const sum = document.getElementById('sum' + sec);
|
||||||
|
if (!area || !fb || !sum || !pool || !s) return; // секция отсутствует на этой странице
|
||||||
|
sum.classList.remove('show');
|
||||||
|
|
||||||
const q = pool[s.idx];
|
const q = pool[s.idx];
|
||||||
const done = s.results[s.idx] !== null;
|
const done = s.results[s.idx] !== null;
|
||||||
@@ -5836,9 +5838,11 @@ if (refToggle && refPanel) {
|
|||||||
// ══════════════════════════════════════════════
|
// ══════════════════════════════════════════════
|
||||||
// ИНИЦИАЛИЗАЦИЯ
|
// ИНИЦИАЛИЗАЦИЯ
|
||||||
// ══════════════════════════════════════════════
|
// ══════════════════════════════════════════════
|
||||||
['p1','p2','p3','p4','p5','p6','p7','p8','p9','p10','p11','p12','p13','p14','p15','p16','p17','p18','p19','p20','p21','p22','p23','p24','p25','p26','p27','p28','p29','p30','p31','p32','p33','p34','p35','p36','hard'].forEach(sec => renderTask(sec));
|
try {
|
||||||
setParaTab('p1');
|
['p1','p2','p3','p4','p5','p6','p7','p8','p9','p10','p11','p12','p13','p14','p15','p16','p17','p18','p19','p20','p21','p22','p23','p24','p25','p26','p27','p28','p29','p30','p31','p32','p33','p34','p35','p36','hard'].forEach(sec => { try { renderTask(sec); } catch(e){} });
|
||||||
upd2(); upd3(); upd4(); upd5(); upd6(); upd7(); upd8(); upd10(); upd11(); upd12();
|
} catch(e) {}
|
||||||
|
try { setParaTab('p1'); } catch(e) {}
|
||||||
|
[upd2,upd3,upd4,upd5,upd6,upd7,upd8,upd10,upd11,upd12].forEach(fn => { try { fn(); } catch(e){} });
|
||||||
|
|
||||||
try {
|
try {
|
||||||
upd16(); upd17(); upd19(); upd20(); upd21();
|
upd16(); upd17(); upd19(); upd20(); upd21();
|
||||||
|
|||||||
Reference in New Issue
Block a user