必须嵌套在标签内且不能自闭合,其name/value需匹配插件约定,仅在插件初始化时生效,现代浏览器已基本弃用该机制。

object 标签里 param 必须写在开始标签和结束标签之间
浏览器只认 <object><param></object> 这种嵌套结构,<param> 放在 <object></object> 外面、或用自闭合写法(<param>)都无效。很多初学者直接复制粘贴时漏掉闭合标签,导致参数根本没传进去。
典型错误写法:<object data="flash.swf"></object><param name="wmode" value="transparent"> —— 这个 <param> 完全被忽略。
正确结构示例:
<object data="player.swf" type="application/x-shockwave-flash" width="640" height="360"> <param name="movie" value="player.swf"> <param name="wmode" value="transparent"> <param name="allowFullScreen" value="true"> <!-- fallback content --> Your browser does not support Flash. </object>
param 的 name 和 value 值必须匹配插件/控件的接收约定
不是所有 name 都通用,比如 Flash 插件识别 movie、wmode、quality,但换成 src 或 background 就不起作用;而 Java applet 可能要求 code、archive、param1 这类特定名。
常见陷阱:
-
movie参数在 Flash 中是必需的,即使data属性已指定路径,某些旧版 IE 仍依赖它 -
allowScriptAccess默认是"samedomain",若要 JS 调用 Flash 方法,得显式设为"always"(注意安全风险) -
value中含空格或特殊字符(如&)必须 HTML 实体编码,否则解析中断:用&代替&
param 在不同浏览器中加载时机不一致,不能依赖 JS 立即读取
<param> 是给嵌入对象(如 Flash、PDF 阅读器、Java)用的,不是给 JS 读的。DOM 中查不到 param 元素的运行时值,JS 也无法通过 object.params 拿到 —— 它只在插件初始化阶段由浏览器透传给插件进程。
如果你试图用 JS 动态改 param 再重载对象,基本无效:多数插件只在首次加载时读取 param,后续修改 DOM 不触发重初始化。
替代方案:
- 需要动态参数?改用 JS API(如 Flash 的
ExternalInterface,或 PDF.js 的PDFViewerApplication.open()) - 必须用
object+param?那就服务端渲染不同参数组合,或整块替换<object></object>元素并重新插入 DOM - 现代场景优先考虑
<iframe></iframe>或原生 API(如<video></video>),object+param已基本退场
HTML5 中 object + param 已无标准语义保障
HTML5 规范里 <object></object> 仍保留,但明确说明 <param> 的行为“由资源类型决定”,不再定义具体映射规则。这意味着:
- Chrome 80+ 彻底移除了 NPAPI 插件支持(Flash、Java、Silverlight 全挂)
- Edge(Chromium 版)同理,
param对这些已失效的插件毫无意义 - 当前唯一稳定支持
param的场景只剩极少数遗留系统中的 ActiveX(仅 IE 或旧 Edge 兼容模式)或本地 PDF 阅读器(如 Adobe Reader 插件,但已极少启用)
如果只是想传参给一个自定义 Web 组件,别绕路用 object —— 直接用 data- 属性 + customElements.define 更可控。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











