v26110253 测试类页面记住最后停留的页面(开始/答题第几题/结果):生娃计算器、5 个专题测试、广场测一测
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -367,8 +367,8 @@ mark{background:linear-gradient(transparent 62%,var(--c20) 0);color:inherit;padd
|
||||
</div>
|
||||
<div class="toast" id="toast"></div>
|
||||
|
||||
<script src="meta.js?v=26110252"></script>
|
||||
<script src="tests.js?v=26110252"></script>
|
||||
<script src="meta.js?v=26110253"></script>
|
||||
<script src="tests.js?v=26110253"></script>
|
||||
<script>
|
||||
(function () {
|
||||
'use strict';
|
||||
@@ -413,7 +413,15 @@ mark{background:linear-gradient(transparent 62%,var(--c20) 0);color:inherit;padd
|
||||
var n = 0;
|
||||
es.forEach(function (e) { if (!e.isIntersecting) return; var el = e.target; io.unobserve(el); setTimeout(function () { el.classList.add('in'); }, 60 * n++); });
|
||||
}, { root: sc, threshold: .08 }) : null;
|
||||
/* 11-03 用户:「重新测试后退回首页,再进来还是结果页;应该以最后所在的页面,再进来呈现对应的页面」
|
||||
→ 每个测试记住最后停在哪(开始 / 第几题 / 结果),按 openid + 测试 id 存 mmbox.gcts.pos.v1,再进来回到那里 */
|
||||
var PKEY = 'mmbox.gcts.pos.v1';
|
||||
function pos(v) {
|
||||
if (v) pos.v = v;
|
||||
try { var o = JSON.parse(localStorage.getItem(PKEY) || '{}'); o[UID] = o[UID] || {}; o[UID][t.id] = { v: pos.v, cur: cur, ans: ans }; localStorage.setItem(PKEY, JSON.stringify(o)); } catch (e) {}
|
||||
}
|
||||
function show(name) {
|
||||
pos(name);
|
||||
Object.keys(views).forEach(function (k) { views[k].classList.toggle('on', k === name); });
|
||||
sc.scrollTop = 0;
|
||||
[].forEach.call(views[name].querySelectorAll('.fade'), function (el) { el.classList.remove('in'); if (io) { io.unobserve(el); io.observe(el); } else el.classList.add('in'); });
|
||||
@@ -472,6 +480,7 @@ mark{background:linear-gradient(transparent 62%,var(--c20) 0);color:inherit;padd
|
||||
$('#prevBtn').disabled = cur === 0;
|
||||
if (isQuiz) { var k = $('#qOk'); k.hidden = !ans.length; k.textContent = '答对 ' + okCount(); }
|
||||
if (ans[cur] != null) mark(ans[cur], true);
|
||||
if (pos.v === 'quiz') pos();
|
||||
}
|
||||
function mark(i, replay) {
|
||||
var bs = $('#qOpts').querySelectorAll('.opt');
|
||||
@@ -513,7 +522,7 @@ mark{background:linear-gradient(transparent 62%,var(--c20) 0);color:inherit;padd
|
||||
/* ================= ③ 计分 ================= */
|
||||
function band(v) { var r = R[0]; R.forEach(function (x) { if (x.min != null && v >= x.min) r = x; }); return r; }
|
||||
var res = null;
|
||||
function finish() {
|
||||
function finish(old) { /* old = 上次的记录:回到结果页时按存下的答案重算、不重新落记录 */
|
||||
var qs = t.questions;
|
||||
if (isQuiz) {
|
||||
var ok = okCount(); res = { r: band(ok), v: ok, p: ok / N, score: ok + '/' + N };
|
||||
@@ -531,8 +540,8 @@ mark{background:linear-gradient(transparent 62%,var(--c20) 0);color:inherit;padd
|
||||
var pc = {}, rest = 100; R.forEach(function (r) { pc[r.k] = Math.round(cnt[r.k] / N * 100); rest -= pc[r.k]; }); pc[tied[0].k] += rest;
|
||||
res = { r: tied[0], cnt: cnt, pc: pc, score: '' };
|
||||
}
|
||||
res.ans = ans.slice(); res.at = Date.now();
|
||||
saveRec({ title: res.r.title, score: res.score, at: res.at });
|
||||
res.ans = ans.slice(); res.at = old ? old.at : Date.now();
|
||||
if (!old) saveRec({ title: res.r.title, score: res.score, at: res.at, ans: res.ans });
|
||||
renderResult();
|
||||
}
|
||||
|
||||
@@ -713,7 +722,14 @@ mark{background:linear-gradient(transparent 62%,var(--c20) 0);color:inherit;padd
|
||||
}, { passive: false });
|
||||
document.addEventListener('touchmove', function (e) { if (!sc.contains(e.target) && !$('#mask').contains(e.target) && e.cancelable) e.preventDefault(); }, { passive: false });
|
||||
|
||||
renderStart(); show('start');
|
||||
renderStart();
|
||||
(function () {
|
||||
var p = null, rec = store()[t.id];
|
||||
try { p = ((JSON.parse(localStorage.getItem(PKEY) || '{}'))[UID] || {})[t.id]; } catch (e) {}
|
||||
if (p && p.v === 'quiz' && Array.isArray(p.ans)) { cur = Math.max(0, Math.min(+p.cur || 0, N - 1)); ans = p.ans.slice(0, N); paint(); show('quiz'); return; }
|
||||
if (p && p.v === 'result' && rec && Array.isArray(rec.ans) && rec.ans.length === N) { ans = rec.ans.slice(); finish(rec); return; }
|
||||
show('start'); /* 新进来 / 上次停在开始页 / 旧记录没存答案 */
|
||||
})();
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
|
||||
@@ -648,10 +648,10 @@ button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:poin
|
||||
<div id="sheet" role="dialog" aria-modal="true"><i class="sg"></i><div class="sbd" id="sbd"></div></div>
|
||||
<div class="toast" id="toast"></div>
|
||||
|
||||
<script src="topics.js?v=26110252"></script>
|
||||
<script src="data.js?v=26110252"></script>
|
||||
<script src="feed.js?v=26110252"></script>
|
||||
<script src="ceshi/meta.js?v=26110252"></script>
|
||||
<script src="topics.js?v=26110253"></script>
|
||||
<script src="data.js?v=26110253"></script>
|
||||
<script src="feed.js?v=26110253"></script>
|
||||
<script src="ceshi/meta.js?v=26110253"></script>
|
||||
<script>
|
||||
(function () {
|
||||
'use strict';
|
||||
@@ -717,7 +717,7 @@ button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:poin
|
||||
var CMD = null, CMERR = false;
|
||||
/* 头像编码:数字 = av/NNNN.webp(旧代码头像);'av:c012' = av/c012.webp(卡通/可爱卡通);'/…' = 站内绝对路径(内置头像库 /_bridge/avatars/);其余 = assets/img/mom/xxx.jpg */
|
||||
var avP = function (a) { return typeof a === 'number' ? 'av/' + ('000' + a).slice(-4) + '.webp' : a.indexOf('av:') === 0 ? 'av/' + a.slice(3) + '.webp' : a.charAt(0) === '/' ? a : '../assets/img/mom/' + a + '.jpg'; };
|
||||
fetch('cm.json?v=26110252').then(function (r) { return r.json(); }).then(function (j) {
|
||||
fetch('cm.json?v=26110253').then(function (r) { return r.json(); }).then(function (j) {
|
||||
CMD = j; if (openId && NBY[openId]) { renderComments(NBY[openId]); syncBar(NBY[openId]); }
|
||||
}).catch(function () { CMERR = true; if (openId && NBY[openId]) renderComments(NBY[openId]); });
|
||||
function commentsOf(n) {
|
||||
|
||||
@@ -105,7 +105,7 @@ main{padding:6px 16px 0}
|
||||
</div>
|
||||
<div class="wb"><button type="button" id="write"><svg class="ic" viewBox="0 0 24 24"><path d="M12 20h9M16.5 3.5a2.1 2.1 0 013 3L7 19l-4 1 1-4z"/></svg>写新的故事</button></div>
|
||||
|
||||
<script src="../topics.js?v=26110252"></script>
|
||||
<script src="../topics.js?v=26110253"></script>
|
||||
<script>
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
Reference in New Issue
Block a user