不能。现代浏览器已全面移除 npapi/activex 支持,flash/java 插件静默失效;仅 pdf 嵌入可靠,但依赖正确 mime 类型、type 声明及 typemustmatch 校验, 完全无效,fallback 仅在请求失败或 mime 不匹配时触发。

现代浏览器里
不能。Chrome 自 v45、Firefox 自 v52、Edge 自 v14、Safari 更早,已全部移除 NPAPI 和 ActiveX 插件支持。type="application/x-shockwave-flash" 或 type="application/x-java-applet" 这类声明在现代浏览器中静默失败:不报错、不触发 onerror、不渲染 fallback,只留白或显示“Failed to load resource”。
如果你看到某页 <object></object> 似乎“还在工作”,大概率是:
- 运行在 IE11 + 内网 ActiveX 组件环境(已淘汰)
- 企业策略强制启用旧渲染引擎(非标准配置)
- 误把 PDF/SVG 当成了插件——它们走的是浏览器内置处理器,不是插件链路
PDF 嵌入是唯一稳定场景,但参数错配就白屏
<object></object> 当前最可靠用途就是嵌入 PDF,但它极度依赖两端协同:
-
data必须指向可访问的 PDF 路径(相对、绝对或data:URI),且服务器响应头必须为Content-Type: application/pdf;返回text/plain或application/octet-stream就会 fallback -
type必须严格为application/pdf,写成pdf、text/pdf或留空,浏览器将忽略校验逻辑,可能直接下载而非内嵌 - 加
typemustmatch属性可强制 MIME 匹配,避免服务端返回 HTML 却被当 PDF 渲染 - 本地开发用
file://协议时,Firefox 可能忽略type,只认文件扩展名;建议起 HTTP 服务预览(如npx http-server)
标签在现代浏览器里完全失效
<param> 是专为旧式插件设计的传参机制,现代浏览器既不解析也不转发这些参数。常见错误包括:
- 把参数写成
<object data="p.swf" flashvars="a=1"></object>——flashvars是属性,无效 - 拼错
name,比如flashVars(大小写敏感)或FlashVars,老插件直接忽略 -
value含中文或&等符号未用encodeURIComponent()编码,导致参数截断 - 在 PDF 场景下滥用
<param name="src" value="report.pdf">—— PDF 查看器根本不认这个
fallback 内容不是“备用 data”,而是失败后才显示
<object></object> 内部的 HTML(如 <p>请下载 PDF</p>)仅在以下情况激活:
- HTTP 请求失败(404、500、网络中断)
- 响应 MIME 类型与
type不匹配(如返回text/html却声明application/pdf) - 用户禁用了 PDF 查看器或 SVG 渲染引擎
它不会因 data=""、data="xxx"(路径非法)、或 data 指向非 PDF 文件而触发——此时浏览器连请求都不发。
真正容易被忽略的一点是:typemustmatch 属性虽能加强校验,但若服务端无法保证正确响应头,反而会让 fallback 成为唯一出路;而很多老旧 CMS 或静态托管平台默认不设 PDF 的 Content-Type,这点必须提前验证。











