应使用SWFObject库动态嵌入SWF,因其可检测Flash版本、自动插入代码并支持fallback;若必须用原生标签,则优先采用object嵌套embed结构,其次为独立embed标签,且需确保客户端已启用Flash插件并满足协议与版本要求。

如果您希望在HTML5页面中嵌入SWF文件,但现代浏览器已逐步移除对Flash Player的原生支持,则需明确当前环境是否仍具备Flash运行条件。以下是兼容性嵌入SWF的具体操作方式:
一、使用embed标签直接嵌入SWF
embed标签是HTML中嵌入外部资源的简洁方式,适用于已安装Flash Player插件的旧版浏览器(如Chrome 87及更早版本、IE11、Firefox ESR 78等)。该方法依赖客户端本地Flash插件,不经过JavaScript控制,兼容性取决于用户是否启用并保留Flash支持。
1、在HTML文档的body内插入embed标签,设置src属性指向SWF文件路径。
2、通过width和height属性指定显示区域尺寸,单位为像素。
立即学习“前端免费学习笔记(深入)”;
3、添加type属性值为application/x-shockwave-flash,以显式声明MIME类型。
4、可选添加flashvars属性,以键值对形式向SWF传递初始参数,多个参数用&分隔。
二、使用object标签嵌套embed实现双层兼容
object标签提供更规范的插件嵌入机制,配合内部embed作为备用方案,可提升在部分旧浏览器中的解析鲁棒性。该结构被Adobe官方文档推荐用于Flash嵌入,尤其适用于需要fallback内容或需响应object事件的场景。
1、使用object标签包裹embed标签,设置data属性为SWF文件URL。
2、在object标签中设置type为application/x-shockwave-flash,并指定classid(仅IE识别)为clsid:D27CDB6E-AE6D-11cf-96B8-444553540000。
3、在object内部嵌入embed标签,其src、width、height、type等属性与独立embed方式一致。
4、可在object开始标签后、embed标签前添加替代文本或降级HTML内容,供不支持Flash的环境显示。
三、通过SWFObject库动态嵌入SWF
SWFObject是一个轻量级JavaScript库,可检测Flash Player版本、自动插入object/embed代码,并支持自定义fallback内容。它规避了手动编写跨浏览器object嵌入的复杂性,适合需精确控制Flash版本要求或需统一管理多个SWF实例的页面。
1、在页面head中引入swfobject.js文件,来源可为本地或CDN托管版本。
2、在目标容器元素(如div)上设置唯一id,例如id="flash-content"。
3、调用swfobject.embedSWF()方法,传入SWF路径、容器ID、宽高、最低要求Flash版本、以及可选的flashvars、params、attributes参数对象。
4、确保params对象中包含allowScriptAccess、wmode等关键参数,例如params.allowScriptAccess = "always"。
四、启用Flash播放的必要前提配置
即使HTML嵌入代码正确,SWF仍无法运行时,必须核查客户端环境是否满足基础运行条件。Flash Player已于2021年1月正式停止更新与支持,所有主流浏览器默认禁用该插件,因此以下配置仅适用于仍维护Flash支持的封闭环境或企业内网。
1、确认操作系统已安装Adobe Flash Player 32.0或更低版本(最终公开版本),且未被系统策略强制卸载。
2、在Chrome地址栏输入chrome://settings/content/flash,将Flash设置为“允许网站运行Flash”,并关闭“在2021年后阻止Flash内容”选项(若存在)。
3、在Firefox地址栏输入about:config,搜索plugin.state.flash,将其值设为2(启用)。
4、确保网页协议为HTTP或HTTPS,Flash Player拒绝从file://协议加载SWF文件,本地测试必须通过本地服务器访问。











