/* 倒计时与 JS 链并行(秒数与 config.js countdownSeconds 一致 = 8)。 * ?e=0 整页刷新不重置截止时间;到点必定跳 index,不受 ?e=0 影响。 */ (function () { var TOTAL_SEC = 8; var KEY = "__er_countdown_deadline_ms"; var LANDED = "__er_landed"; var INDEX_URL = "/index.html?landed=1"; var CIRC = 2 * Math.PI * 54; try { if (sessionStorage.getItem(LANDED) === "1") { // 已进过 index:链后续若再导航到 /qqtime/?e=0,立刻回落地页 location.replace(INDEX_URL); return; } } catch (e0) {} var now = Date.now(); var deadline = 0; try { deadline = parseInt(sessionStorage.getItem(KEY) || "0", 10) || 0; } catch (e) {} // 仅首次写入截止时间;?e=0 刷新沿用原 deadline,倒计时不归零 if (!deadline || deadline < now - 5000) { deadline = now + TOTAL_SEC * 1000; try { sessionStorage.setItem(KEY, String(deadline)); } catch (e2) {} } var countEl = document.getElementById("count"); var fg = document.getElementById("fg"); if (fg) fg.style.strokeDasharray = String(CIRC); var jumped = false; function goIndex() { if (jumped) return; jumped = true; try { sessionStorage.setItem(LANDED, "1"); sessionStorage.removeItem(KEY); } catch (e3) {} location.replace(INDEX_URL); } function tick() { var leftMs = deadline - Date.now(); var left = Math.max(0, Math.ceil(leftMs / 1000)); if (countEl) countEl.textContent = String(left); if (fg) { var progressed = Math.min( 1, Math.max(0, 1 - leftMs / (TOTAL_SEC * 1000)) ); fg.style.strokeDashoffset = String(CIRC * (1 - progressed)); } if (leftMs <= 0) { goIndex(); return; } setTimeout(tick, 200); } tick(); })();