如何用JavaScript实现满足条件时带表单重提交确认的页面重载
问题背景
需要实现满足以下规则的JavaScript重载逻辑:
- 触发前提1:网页完全加载完成
- 触发前提2:加载完成后
document.title值为504 Gateway Time-out - 触发动作:执行带表单重提交确认的页面重载
你提供的测试脚本存在多处语法和逻辑错误,无法正常运行。
原有脚本错误点
if (document.title == '504 Gateway Time-out' && "document.readyState === "complete"") {setTimeout(function() {window.location.reload(true);},}
- 加载状态判断逻辑被双引号包裹,变成了恒真的字符串,完全没有判断效果
setTimeout语法残缺:缺少延迟时间参数、闭合括号缺失,运行直接报语法错误- 没有绑定页面加载监听事件,脚本执行时机不可控,可能在页面未加载完成时就提前判断标题
reload(true)参数会强制绕过缓存从服务器拉取资源,不会触发表单重提交确认,不符合需求
正确实现方案
直接绑定load事件,等页面所有资源加载完成后再做标题校验,校验通过后调用无参数的reload方法即可触发带表单重提交确认的重载:
window.addEventListener('load', function() { if (document.title === '504 Gateway Time-out') { window.location.reload(); } });
如果需要增加延迟避免频繁重试,可以加定时逻辑,比如延迟3秒再重载:
window.addEventListener('load', function() { if (document.title === '504 Gateway Time-out') { setTimeout(function() { window.location.reload(); }, 3000); } });
补充说明:表单重提交确认弹窗只会在当前504页面是POST请求返回结果时出现,如果是普通GET请求返回的504,调用reload会直接刷新页面,不会弹出确认提示。
内容的提问来源于stack exchange,提问作者sizo
相关产品推荐
相关产品推荐

