http-equiv="refresh"跳转必须严格按content="秒数;url=地址"格式书写,分号不可少、url=须小写紧贴等号、空格或大小写错误均导致静默失效;不支持提示、取消或监听,仅适用于简单静默跳转。
http-equiv="refresh" 跳转时,时间单位和 URL 必须严格按格式写这个 meta 标签本质是模拟 HTTP 响应头 Refresh,浏览器只认固定格式:content="秒数;url=目标地址"。中间的分号不能少,url= 必须小写且紧贴等号,空格会直接失效。
常见错误现象:页面卡住不动、跳转后 404、或跳转到当前页本身(比如漏写 url= 或写成 URL=)。
content="3;url=/home" ✅ 相对路径,3 秒后跳转到同域下的 /home
content="0;url=https://example.com" ✅ 立即跳转,常用于旧域名重定向content="5; url=/login" ❌ 分号后多了一个空格,部分浏览器忽略整个标签content="2;URL=/admin" ❌ URL 大写,IE 和旧版 Edge 可能不识别http-equiv="refresh" 本身不支持这个 meta 标签纯属“静默跳转”,不会触发任何 JS 事件,也无法监听或取消。如果需要倒计时提示、取消按钮或用户确认,必须配合 JavaScript 实现,不能只靠 meta。
使用场景很明确:简单重定向(如维护页跳首页)、旧链接迁移、或 SEO 友好的临时跳转。不适合交互型流程。
立即学习“前端免费学习笔记(深入)”;
http-equiv="refresh" 视为 302 重定向,但不如服务端 301/302 稳定,长期跳转建议走后端http-equiv="refresh" 支持较弱,偶发跳转延迟或失败http-equiv="refresh" 标签共存时,以第一个为准HTML 解析是顺序执行的,后面出现的同类型 meta 标签会被忽略。即使你写了两个,只有第一个生效,其余被丢弃。
容易踩的坑是模板拼接或 CMS 插件重复注入——比如页头加了一次,页脚又加了一次,结果跳转逻辑出乎意料。
<meta http-equiv="refresh" 确认是否唯一