standby属性仅在旧版插件加载失败时供浏览器选择性显示提示文本,现代浏览器均忽略它,不触发事件、不渲染内容、不影响加载,无实际功能。

standby 属性在 <object></object> 中的实际作用
standby 是 <object></object> 元素的原生 HTML 属性,但它**不控制加载行为,也不触发任何 JavaScript 事件或样式变化**。它的唯一用途是:当插件(如旧版 Flash、Java Applet)尚未加载完成或初始化失败时,浏览器可选择性地显示一段提示文本——仅此而已。
为什么多数现代浏览器完全忽略 standby
这个属性在 HTML4 规范中定义,但从未被主流浏览器一致实现。Chrome、Firefox、Edge 均不渲染 standby 值,Safari 也无响应。它本质上是一个“遗留装饰性字段”,不是功能开关:
- 即使设置
standby="正在加载媒体...",页面上也不会自动出现该文字 - 没有 CSS 伪元素(如
::before)能读取或渲染它 - JavaScript 无法通过
el.getAttribute('standby')获取后用于 UI 更新(虽然能读到值,但无配套机制) - 它不影响资源加载时机、网络请求或 fallback 行为
真正可控的加载提示替代方案
要实现可靠的加载状态反馈,必须绕过 standby,改用明确的 DOM 控制逻辑:
- 用
<div class="loader"> + CSS 动画做占位提示,初始显式显示,<code>load或error事件后display: none - 监听
<object></object>的load事件(注意:部分插件环境不触发,需降级检测) - 对 embed 类型资源(如 PDF),优先用
<iframe></iframe>并监听其onload,更稳定 - 服务端返回 200 但内容为空时,
standby依然沉默——必须靠 JS 检查contentDocument或超时判定 - 写上去不报错,但也不起效,容易让人误以为“已处理加载提示”
- 若团队成员误以为它是标准加载钩子,后续可能跳过真实加载逻辑
- HTML 验证器(如 W3C Validator)会接受它,但 Lighthouse 或 axe 不会检查其有效性
- 现代打包工具(如 webpack)或 SSR 框架(如 Next.js)通常直接忽略该属性,不参与 hydration
兼容性与维护建议
除非你仍在维护 Netscape 4 或 IE5.5 的系统,否则不要在新项目中写 standby。它不会报错,但会制造虚假安全感:
真正需要加载反馈的地方,永远依赖显式的 JS 状态管理和 DOM 替换——standby 就像一个贴在坏掉的仪表盘上的“运行中”贴纸,看着安心,实际没连电路。











