Repository navigation
[Bug] 已结束比赛的直接题目提交回退功能失效 #1017
Copy link
Copy link
Closed
Labels
Description
Activity
你们说仅检查 text.indexOf("没有这个比赛!")行不行
主要是要保证服务端不会返回其他错误提示(如“比赛已结束”)或响应为重定向导致无法捕获文本而且发起二次提交后只 console.log 了响应文本,未根据结果决定是否继续,也未阻止外层错误显示。
检查单
- 是否可以提取真实题目号?
- 新增回退提交后判断结果并阻断外层错误
- 检查是否需要更宽泛的错误检测
我去看看
还有本人喜欢在每个issue下面弄个检查单 /bx怎么找一个满足这个条件的比赛.jpg
ok
重现成功在任何月赛 开始尝试我自己的修改new bug is detected: 状态里没有题目提交记录
It is a rate limit issue
- added a commit that references this issue
on Oct 6, 2026
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone

检查项
问题描述
#287 / #671 实现的“比赛结束后自动向原题提交”功能现在已失效。
这里的问题不是普通提交按钮,也不是 QuickSubmit CLI 本身,而是
XMOJ.user.js提交页代码中借用 QuickSubmit 逻辑实现的回退路径:cid + pid向submit.php提交;没有这个比赛!,则请求对应的contest.php?cid=...;#problemset > tbody中取得该比赛题目对应的真实 PID;id=<真实 PID>直接提交。当前从已结束比赛的提交页提交时,这条回退路径不再成功,最终仍然显示提交失败,且没有向原题创建提交记录。
复现步骤
/submitpage.php?cid=<cid>&pid=<pid>。期望行为
比赛提交已经不可用时,脚本应当像 #287 设计的那样解析真实题号,并自动改为向原题直接提交。
实际行为
脚本未能完成向原题的回退提交,页面显示“提交失败!请关闭脚本后重试!”,且没有新的提交记录。
相关代码
当前逻辑位于
XMOJ.user.js的提交页PassCheck处理器中(约 4200–4291 行),QuickSubmit 来源说明在约 4219 行。建议检查:
没有这个比赛!;#problemset > tbody的当前结构是否仍与rows[i].children[1].textContent.substring(2, 6)的解析假设一致;