刷新回子页面:防来回跳只拦同一页 5 秒内 (v26110642)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
deploy
2026-11-07 06:17:48 +00:00
parent 82b9864392
commit 7d413a5375
4 changed files with 12 additions and 11 deletions

View File

@@ -1059,7 +1059,7 @@ html.night .gtg button.on{background:#F2725B;border-color:#F2725B;color:#fff}
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=26110641').then(function (r) { return r.json(); }).then(function (j) {
fetch('cm.json?v=26110642').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) {

View File

@@ -9,10 +9,10 @@
<title>兜爸心选 · 孕育陪伴</title>
<!-- 11-04 UGC 总开关(孕妈广场 + 测一测,后台 /box_bm/plaza 顶部切换),见 js/ugc.js -->
<script src="js/ugc.js?v=26110702"></script>
<!-- V:26110641 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
<!-- V:26110642 缓存版本标记:改 css/js 时同步 bump 该值(与 js/app.js 的 VER 同源),静态资源按 mtime 走 ETag 自动刷新 -->
<link rel="stylesheet" href="mama-box.css">
<link rel="stylesheet" href="night.css?v=26110608">
<link rel="stylesheet" href="js/wh-cm.css?v=26110641">
<link rel="stylesheet" href="js/wh-cm.css?v=26110642">
<!-- 11-04 用户:「顶部图片上的倒计时先删除掉」→ 不加载 hero-cd.css / hero-cd.js(文件留着,加回这两行即恢复),头图回到原样式 -->
<!-- 夜晚模式:首屏绘制前就按上次的选择加 class,避免先白后黑闪一下(开关在首页右上角 #nightBtn,逻辑见 app.js) -->
<script>try{if(localStorage.getItem('mmbox.night.v1')==='1'){document.documentElement.classList.add('night');document.querySelector('meta[name=theme-color]').content='#2A2340'}}catch(e){}</script>
@@ -2680,7 +2680,7 @@ html.night .rs-pan .rp-card{background:rgba(255,255,255,.06);border-color:rgba(2
<script src="guangchang/topics.js?v=26110487"></script>
<script src="js/ava-pool.js?v=26110487"></script> <!-- 11-05 装饰头像分配表(各模块互不重复) -->
<script src="js/wh-themes.js?v=26110609"></script>
<script src="js/wh-cm.js?v=26110641" defer></script>
<script src="js/wh-cm.js?v=26110642" defer></script>
<script src="js/app.js"></script>
<script src="js/kit.js?v=26110605"></script>
<!-- 11-05 用户:孕期百问加上跟趣味小测试一样的底部 Tab(孕期百问 / 记一下 / 返回首页)。挂在 #detailQA 里,面板关着时跟着滑出屏外;

View File

@@ -3,7 +3,7 @@
(function () {
'use strict';
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
var VER = '26110641';
var VER = '26110642';
const $ = (s, c) => (c || document).querySelector(s);
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));
@@ -209,20 +209,21 @@
if (/[?&](wh|wc|go|demo)=/.test(location.search) || hashParam('norestore')) return false;
/* 11-07 二修:不再看 referrer —— 宿主回前台 / 刷新是在原页面里直接换地址,referrer 也是子页面。
改为:子页面里用户刚点过东西才离开(last-sub.js 记 sessionStorage mmbox.usernav)或后退 = 用户自己回首页 → 清记录;
刚恢复过一次又回到首页且不是用户点的(比如那页自己又跳回来)→ 也不再恢复,防来回跳。 */
let un = 0, rs = 0;
try { un = +sessionStorage.getItem('mmbox.usernav') || 0; rs = +sessionStorage.getItem('mmbox.subback') || 0; sessionStorage.removeItem('mmbox.usernav'); } catch (e) {}
5 秒内刚把人送回同一页、它又回到首页且不是用户点的(那页自己跳回来)→ 不再恢复,防来回跳。 */
let un = 0, rs = null;
try { un = +sessionStorage.getItem('mmbox.usernav') || 0; rs = JSON.parse(sessionStorage.getItem('mmbox.subback') || 'null'); sessionStorage.removeItem('mmbox.usernav'); } catch (e) {}
let nt = '';
try { const nv = performance.getEntriesByType && performance.getEntriesByType('navigation')[0]; nt = nv ? nv.type : ''; } catch (e) {}
const ref = document.referrer || '', fromApp = ref.indexOf(location.origin + '/') === 0 && ref.indexOf(location.origin + homeDir()) !== 0; /* 从别的应用(不在首页仓里)回来:那边没有 usernav 标记,照旧按 referrer 算用户回首页 */
if (Date.now() - un < 8000 || nt === 'back_forward' || fromApp || Date.now() - rs < 15000) { localStorage.removeItem(SUB_KEY); return false; }
if (Date.now() - un < 8000 || nt === 'back_forward' || fromApp) { localStorage.removeItem(SUB_KEY); return false; }
const inMp = window.__wxjs_environment === 'miniprogram' || /miniProgram/i.test(navigator.userAgent);
if (!inMp) return false;
const sub = JSON.parse(localStorage.getItem(SUB_KEY) || 'null');
if (!sub || !sub.u || sub.h !== homeDir() || sub.u.indexOf(homeDir()) !== 0 || Date.now() - sub.at > 7 * 864e5) return false;
if (rs && rs.u === sub.u && Date.now() - rs.at < 5000) { localStorage.removeItem(SUB_KEY); return false; } /* 5 秒前刚送回这一页、它自己又回了首页:别来回跳 */
const go = function () {
console.log('[resume] 回到上次停的子页面:', sub.u);
try { sessionStorage.setItem('mmbox.subback', String(Date.now())); } catch (e) {}
try { sessionStorage.setItem('mmbox.subback', JSON.stringify({ u: sub.u, at: Date.now() })); } catch (e) {}
location.replace(withIdentity(sub.u) + location.hash); /* 身份 query + 原 hash 都带上(子页面 hash/query 双读) */
};
const oid = hashParam('openid');

View File

@@ -70,7 +70,7 @@
function repOf(c, me) { return { p: c.parent, n: me ? '我' : (c.nickname || '孕妈'), me: me, to: c.parentName, t: c.text, ts: c.at, st: me ? c.status : '' }; }
function load() {
if (loading || SIM) return; loading = true;
fetch('guangchang/cm.json?v=26110641').then(function (r) { return r.json(); }).then(function (j) {
fetch('guangchang/cm.json?v=26110642').then(function (r) { return r.json(); }).then(function (j) {
var PP = j.p;
SIM = (j.c[PID] || []).map(function (c, k) {
var p = PP[c[0]];