param 必须嵌套在 object 内部才生效,是 object 的直接子元素,仅初始化时读取一次,现代浏览器已基本废弃 NPAPI 插件支持,实际作用极小。

param 必须嵌套在 object 内部才生效
param 不是独立标签,浏览器会忽略所有脱离 object 的写法。常见错误包括:param 放在 body 顶层、塞进 div 里、或写在 object 标签闭合之后。
正确结构只有一种:object 开始标签 → 若干个 param(必须是直接子元素)→ 其他内容(如 fallback 文本)→ object 结束标签。
-
param不能嵌套在p、div或embed里,哪怕视觉上“看起来挨着”也没用 - 多个
param并列即可,顺序一般不影响,但 Flash 场景建议把movie放在flashvars前面 -
object必须有data或type(或 IE 下的classid),否则整个块可能被跳过
name 和 value 必须严格匹配插件约定
不同插件对 name 的要求差异极大,没有通用标准。写错大小写、多空格、漏字母,参数就静默失效——控制台通常不报错,只表现为功能异常。
- Flash 插件只认全小写的
flashvars,不是FlashVars或FLASHVARS - Java Applet 要求
code和archive,写成CODE或Code就加载失败 - PDF 插件(极少数仍支持的场景)可能认
src或filename,需查其文档 -
value中含&、=、中文等字符时,必须手动 URL 编码:例如uid=123&token=abc%3Dxyz,不能写成uid=123&token=abc=xyz(HTML 解析阶段就会截断)
param 只在 object 初始化时读取一次
浏览器只在解析 object 标签时读取 param,后续任何 DOM 操作都无效。JavaScript 修改 param 的 value 属性、替换 innerHTML、甚至用 setAttribute,都不会触发插件重载。
立即学习“前端免费学习笔记(深入)”;
- 动态改参唯一可行方式是销毁并重建整个
object节点:先removeChild,再拼新 HTML 插入 - 重建时注意:新
param的name和编码后的value仍需完全合规,否则新节点照样白搭 - 别指望
param实现响应式更新——它本质是一次性配置,不是 reactive binding
现代浏览器中 param 已基本无实际作用
Chrome 自 v45、Firefox 自 v52 ESR、Edge 全版本均已移除 NPAPI 插件支持。object + param 在当前主流浏览器中不会加载 Flash、Java Applet、Silverlight 等插件,页面要么空白,要么控制台报 Failed to load plugin 或静默忽略。
- 即使 DOM 里能看到
param元素,JavaScript 读取其value属性也毫无意义——插件实例根本没创建 - PDF 是目前唯一还可能走
object+param的稳定场景,但也强烈推荐改用iframe或PDF.js - 音视频请直接用
video/audio标签及其原生属性(如autoplay、controls),和param完全无关
真正要传参的场景,现在更实际的做法是:用 data-* 属性存初始配置,再通过 JS SDK 初始化;或直接用 WebAssembly、Canvas、iframe + postMessage 等现代方案。纠结 param 的写法,往往是在维护一个已经失效的路径。



















