← 回工程日志
# #22 待办网址,不管是打钩还是取消打钩,只要点击,页面会莫名其妙跳到最上方
归属日期: 2026-10-13
序号: 22
该任务出现时间为:
2026-10-13-本次第1次
## 2026-10-14 第1次
接手人: Huihui-Qwen3.8-27B-abliterated-GSQ-RCO-IQ3_S (B27)
### 问题
勾选/取消勾选条目时,页面跳到最上方(因为原来是 form POST → 服务端 303 redirect → 整页刷新 → 浏览器回顶部)。
### 根因
旧实现:每个条目的 ☐/☑ 是一个 `<form method="post" action="/toggle">` + `<button type="submit">`。点击后整页 reload,滚动位置丢失。
### 改法
`~/手机待办/todo_server.py`:
1. 把 form+submit button 改为纯 `<button onclick="toggleMain(N,this,event)">`
2. `toggleMain` JS:fetch POST `/toggle`(异步),成功后只更新当前条目的 class/文字/颜色,**不刷新页面、不跳顶部**
3. `ev.preventDefault(); ev.stopPropagation()` 防止点击冒泡到 `<summary>` 触发 details 展开/折叠
### 验证
```bash
$ curl -s --noproxy '*' http://127.0.0.1:8190/ | grep -c 'form method="post" action="/toggle"'
0 # 旧 form 式勾选已全部清除
$ curl -s --noproxy '*' http://127.0.0.1:8190/ | grep -c 'toggleMain'
24 # 函数定义 + 每个条目按钮
$ systemctl --user is-active phone-todo-web
active
```
### 结论
✅ 已修复。勾选操作改为异步 fetch,页面不再跳动。备份同 `todo_server.py.bak_20261014_scroll_toggle`。
电脑A 10-20 21:28