Adobe Flash Player 已经在2025年底被官方正式弃用,并在所有主流浏览器(Chrome, Firefox, Edge, Safari)中被彻底禁用。

网页中弹出flash下载框代码
(图片来源网络,侵删)

现在直接使用 <embed><object> 标签来加载和播放 .swf 文件是行不通的,现代浏览器会阻止 Flash 内容的运行,并显示一个安全警告或空白区域。

我们今天要讨论的“Flash下载框”有两种情况:

  1. 现代、推荐的方式:提供一个下载链接,让用户下载 .swf 文件,然后在他们的本地电脑上使用旧版浏览器或专门的播放器(如 Ruffle)来打开。
  2. 旧时代的方式(已失效):直接在网页中嵌入并播放 Flash 动画,同时提供下载,这种方式现在已经无法在标准浏览器中实现。

下面我将分别提供这两种情况的代码。


现代、推荐的实现方式(仅提供下载链接)

这是目前唯一可行的方式,你的目标用户需要自己负责如何播放这个已过时的文件。

网页中弹出flash下载框代码
(图片来源网络,侵删)

代码实现

这种方式非常简单,就是一个标准的 HTML 下载链接。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">Flash 文件下载</title>
    <style>
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            background-color: #f0f2f5;
        }
        .container {
            text-align: center;
            background-color: white;
            padding: 40px;
            border-radius: 8px;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
        }
        h1 {
            color: #333;
        }
        p {
            color: #666;
            margin-bottom: 20px;
        }
        /* 核心样式:下载链接 */
        .download-link {
            display: inline-block;
            padding: 12px 24px;
            background-color: #007bff;
            color: white;
            text-decoration: none;
            border-radius: 5px;
            font-weight: bold;
            transition: background-color 0.3s ease;
        }
        .download-link:hover {
            background-color: #0056b3;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>经典 Flash 动画下载</h1>
        <p>
            由于 Adobe Flash 已被弃用,请下载此文件并在本地使用兼容的播放器打开。
            你可以安装 <a href="https://ruffle.rs/" target="_blank" style="color: #007bff;">Ruffle</a> 等现代 Flash 模拟器来播放。
        </p>
        <!-- 
          核心代码:使用 a 标签的 download 属性
          href 指向你的 .swf 文件
          download 属性指定下载时显示的文件名
        -->
        <a href="path/to/your/animation.swf" class="download-link" download="my-cool-animation.swf">
            点击下载 Flash 文件 (animation.swf)
        </a>
    </div>
</body>
</html>

代码解析

  • <a>:这是创建超链接的标准标签。
  • href="path/to/your/animation.swf":这是最重要的部分,你需要将 path/to/your/animation.swf 替换为你的 .swf 文件的实际 URL 或相对路径。
  • download="my-cool-animation.swf":这个属性告诉浏览器,这个链接不是用于导航,而是用于下载文件。"my-cool-animation.swf" 是用户下载时看到的默认文件名,你可以根据需要修改它。
  • 样式 (<style> 部分):这部分 CSS 只是让下载按钮看起来更美观、更突出,你可以自由修改或移除它。

旧时代的实现方式(已失效,仅作历史参考)

在 Flash 时代,网页通常会先展示动画,然后提供一个下载按钮,下面是当时用来实现“播放 + 下载”的代码。

HTML 代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">旧版 Flash 演示</title>
    <style>
        body { text-align: center; padding-top: 50px; background-color: #eee; }
        .flash-container { margin: 0 auto; }
        .download-btn {
            display: inline-block;
            margin-top: 20px;
            padding: 10px 20px;
            background-color: #333;
            color: white;
            text-decoration: none;
            border-radius: 5px;
        }
    </style>
</head>
<body>
    <div class="flash-container">
        <!-- 旧版嵌入 Flash 的代码 -->
        <object
            classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
            codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"
            width="550"
            height="400">
            <param name="movie" value="path/to/your/animation.swf" />
            <param name="quality" value="high" />
            <embed
                src="path/to/your/animation.swf"
                quality="high"
                type="application/x-shockwave-flash"
                width="550"
                height="400"
                pluginspage="http://www.macromedia.com/go/getflashplayer">
            </embed>
        </object>
        <!-- 下载按钮 -->
        <br>
        <a href="path/to/your/animation.swf" class="download-btn" download="animation.swf">
            下载此 Flash 动画
        </a>
    </div>
</body>
</html>

代码解析(为什么它现在无效了)

  1. <object>:这是 ActiveX 控件,主要用于 Internet Explorer (IE) 浏览器。classid 属性指定了要加载的控件类型(这里是 Flash Player)。
  2. <embed>:这是 Netscape 浏览器时代的产物,后来被所有浏览器广泛支持,它更简单直接。
  3. codebasepluginspage:这些属性指向了 Adobe 官方的 Flash Player 安装程序,当用户的浏览器没有安装或需要更新 Flash Player 时,会提示用户去这些地址下载安装。
  4. 为什么现在不工作了?
    • 浏览器安全策略:现代浏览器为了安全,默认禁用了所有 NPAPI 插件(Flash Player 就是其中之一)。
    • .swf 文件 MIME 类型:服务器可能不再提供 application/x-shockwave-flash 这种 MIME 类型,导致浏览器无法识别 .swf 文件。
    • 官方弃用:Adobe 已停止更新和分发 Flash Player,codebase 指向的链接也已失效。

总结与最终建议

特性 方案一 (现代) 方案二 (旧版)
可行性 完全可行 已失效
核心代码 <a href="file.swf" download="name"> <object> / <embed>
用户体验 用户下载后自行处理播放 浏览器直接播放,体验连贯
适用场景 保存、备份或分发过时的 Flash 内容 在 Flash 时代展示和分发内容
技术状态 当前标准做法 历史遗迹

如果你想为用户提供一个“Flash下载框”,请务必使用方案一,清晰地告知用户 Flash 已被弃用,并提供下载链接,如果你还想让用户能在网页上看到这个动画,可以考虑在页面上嵌入一个 Ruffle 播放器(一个用 Rust 编写的开源 Flash 模拟器),但这会使事情变得更复杂,超出了“下载框”的简单范畴。

对于绝大多数情况,一个简单的、带有 download 属性的 <a> 标签就是最好的答案。

网页中弹出flash下载框代码
(图片来源网络,侵删)