检查项
问题描述
#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 行。
建议检查:
- XMOJ 当前失败响应是否仍然包含精确字符串
没有这个比赛!;
- 失败响应现在是否通过重定向返回,导致回退分支根本不会执行;
#problemset > tbody 的当前结构是否仍与 rows[i].children[1].textContent.substring(2, 6) 的解析假设一致;
- 直接重试成功后,外层处理是否仍会继续执行并覆盖为“提交失败”状态。
检查项
问题描述
#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)的解析假设一致;