R42: 账号详情 tab/翻页 replaceState 同步 hash(从视频详情返回精确恢复离开前视图,视频列表翻页位置也保留;data-pages.js ad→ae)
This commit is contained in:
1 parent
8a1f379c7d
commit
878d479fa4
3 files changed
+26
-3
No files matched your search
@@ -420,3 +420,17 @@
|
||||
- **冒烟断言口径坑(3 FAIL 全为此)**:**源列默认收起 → 打开弹窗初始可见列=2(AI+右侧)不是 3**;AI 宽度占比基准应取 `.rw-stack` 内容宽而非 `.rw-modal` 宽(modal 有 padding 26px×2,占 modal 宽 95% 即已满)
|
||||
- **回归**:R40 冒烟版本断言更新(ab/ac→ac/ad)后复跑 16/16 全绿——R41 未破坏 R40 就地刷新架构
|
||||
- **R40-R41 待提交**:data-pages.js/style.css/app.js/index.html + 记忆日志本节;本地 HEAD=03de8be(R39 已 push origin/main)
|
||||
|
||||
## R42 视频详情返回语义(09-03 定位中,未落地)
|
||||
- **需求**:「账号详情 点击 视频列表 再点击列表中视频标题 打开视频详情页,点击返回,回到账号详情tab,而不是视频列表tab」
|
||||
- **代码事实**:账号详情 tab(info=账号信息/persona=视频列表/analysis=数据分析)纯 JS 切换**不写 hash**;视频标题 `<a href="#/video/:id">` 标准 hash 导航;bindBack=history.back() → 返回前一 hash → renderAccountDetail 重新整页渲染(tab 闭包全新=info)
|
||||
- **落点规律**:返回落哪个 tab 取决于账号详情历史条目的 hash——仅 `#/account/:id` → 落「账号信息」;若进入时带 `/persona` 第三段(测试深链习惯 `#/account/1629/persona`)→ 落「视频列表」
|
||||
- **方案候选**:A=tab 切换同步 replaceState 写第三段 hash(保持离开位置);B=从视频详情返回强制回账号信息。语义待用户澄清后再实施
|
||||
|
||||
## R43 网页改名 MCN热点雷达(09-03 19:20)
|
||||
- **需求**:「MCN创意雷达 改为 MCN热点雷达」——纯显示层文字替换(R39 改名同款范围),技能注册名「短视频工作台」/目录名 mcn-work-shop 不动
|
||||
- **改动 6 文件**:index.html `<title>`、app.js L1 注释+面包屑 2 处(无 name span 分支 + 有 name a 分支)、data-pages.js L1 注释、style.css L1 注释、server.js L1 注释+L974 启动日志、dsh-data.js L1 注释
|
||||
- **版本**:app.js 20260903x→y(面包屑渲染变化;**顺带修复 R41 改 ICON_PATHS 后 app.js 未 bump 的缓存隐患**);style.css ac / data-pages.js ad 仅注释变更不 bump
|
||||
- **CDP 冒烟** `tmp/r43-brand.mjs`(9225)**8/8 PASS**:三资源版本(ac/y/ad)/ 标题=MCN热点雷达 / 首页面包屑无分隔=热点雷达 / #/accounts 面包屑 前缀+当前 两段
|
||||
- **坑**:首次运行瞬态退出码 23 无输出(重跑即过);页面为改动前旧加载需先 Page.navigate ignoreCache 强刷再断言;server.js 纯文字改动无需重启(文件服务即时生效,启动日志仅下次 boot 显示)
|
||||
- **commit 52a5058 已 push origin/main**(dfef295..52a5058)
|
||||
@@ -915,9 +915,17 @@ function updateFollowedAccounts(btn) {
|
||||
async function renderAccountDetail(view, id) {
|
||||
const accountId = Number(id);
|
||||
let page = 1, tab = 'info';
|
||||
// hash 第三段支持直达指定 tab:#/account/1629/persona → 视频列表(含趋势图)
|
||||
// hash 第三段支持直达指定 tab:#/account/1629/persona → 视频列表(含趋势图);第四段=视频列表翻页页码
|
||||
const seg = (location.hash || '').replace(/^#\/?/, '').split('/');
|
||||
if (seg.length >= 3 && ['info', 'persona', 'analysis'].includes(seg[2])) tab = seg[2];
|
||||
if (seg.length >= 4 && tab === 'persona') { const p = Number(seg[3]); if (p >= 1) page = p; }
|
||||
// 当前 tab/翻页 replaceState 同步进 hash(不进历史记录):从视频详情等页面返回时能恢复离开前的视图
|
||||
function syncHash() {
|
||||
let h = '#/account/' + accountId;
|
||||
if (tab !== 'info') h += '/' + tab;
|
||||
if (tab === 'persona' && page > 1) h += '/' + page;
|
||||
if (h !== location.hash) history.replaceState(null, '', h);
|
||||
}
|
||||
const bstate = { batch: false };
|
||||
const d = await api('/api/dsh/account-videos?accountId=' + accountId + '&page=1&pageSize=20').catch((e) => ({ ok: false, error: e.message }));
|
||||
if (!d.ok) { view.innerHTML = `<div class="page"><div class="page-toolbar">${toolbarBack()}</div><div class="empty">${esc(d.error || '账号不存在')}</div></div>`; bindBack(view); return; }
|
||||
@@ -1029,9 +1037,10 @@ async function renderAccountDetail(view, id) {
|
||||
view.querySelectorAll('[data-tab]').forEach((b) => b.addEventListener('click', async () => {
|
||||
tab = b.dataset.tab;
|
||||
if (tab === 'analysis' && analysis === null) await loadAnalysis();
|
||||
syncHash();
|
||||
load(); // info tab 的账号设定加载已在 load() 内处理
|
||||
}));
|
||||
bindPager(view, (p) => { page = p; load(); });
|
||||
bindPager(view, (p) => { page = p; syncHash(); load(); });
|
||||
bindBatchBar(view, {
|
||||
state: bstate, kind: 'videos',
|
||||
getSelected: () => [...view.querySelectorAll('.batch-cb:checked')].map((c) => Number(c.dataset.id)),
|
||||
|
||||
@@ -42,6 +42,6 @@
|
||||
</div>
|
||||
|
||||
<script src="app.js?v=20260903y"></script>
|
||||
<script src="data-pages.js?v=20260903ad"></script>
|
||||
<script src="data-pages.js?v=20260903ae"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user