You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron开发浏览器如何配置代码启用Flash Player加载Flash网页

Electron 加载Flash Player配置修正方案

你现有代码存在3个核心问题导致Flash无法加载:

  • 命令行开关调用时机错误:app.commandLine.appendSwitch 配置Flash参数的逻辑必须在app模块触发ready事件前执行,你当前将这两行代码写在createWindow函数内,此时Electron已经完成启动参数读取,配置完全不会生效。
  • Flash动态库路径错误:你写的相对路径pepflashplayer.dll默认从应用启动工作目录查找文件,和你存放的「代码文件夹外部同级目录」位置不匹配,会直接找不到插件文件。
  • Flash版本号不匹配:硬编码的29.0 r0如果和你实际使用的pepflashplayer.dll版本不一致,会导致插件加载被拦截。

前置注意事项

Electron 14.0及以上版本已经彻底移除了PPAPI Flash的支持,如果你的项目依赖版本高于13.x,先降级到Electron 13.x及以下版本,否则任何配置都无法生效。


具体修改步骤

  1. 在文件顶部引入path模块,用于拼接准确的绝对路径,避免相对路径寻址错误。
  2. 将Flash相关的两个命令行开关移动到app.ready事件监听之前,同时修正dll路径为你实际存放的位置(代码文件夹外同级目录),版本号替换为dll的真实版本。
  3. 修正原有代码中模板字符串的语法错误,原代码用单引号包裹模板字符串会导致变量无法解析。
  4. 你已经在webPreferences中开启了plugins: true,这个配置是正确的,保留即可。

修正后的关键代码

// 文件顶部引入依赖
const {app, BrowserWindow, webContents, session, Tray} = require('electron')
const path = require('path')
const {ipcMain} = require('electron');

// 👇 Flash配置必须移到app.ready之前,不能放在createWindow内部
// __dirname 是当前main.js所在的代码文件夹路径,../ 指向代码文件夹的上一级(即你放dll的同级目录)
app.commandLine.appendSwitch('ppapi-flash-path', path.join(__dirname, '../pepflashplayer.dll'))
// 👇 版本号替换成你自己dll的实际版本:右键pepflashplayer.dll-属性-详细信息-产品版本,复制准确值
app.commandLine.appendSwitch('ppapi-flash-version', '32.0.0.465')

let mainWindow, secundaryWindow, tray

function createTray(){
  tray = new Tray('trayTemplate@2x.png')
  tray.setToolTip('Referente ao browser')
  tray.on('click', e =>{
      if(e.shiftKey){
          app.quit()
      }else{
          mainWindow.isVisible() ? mainWindow.hide() : mainWindow.show() 
      }
  })  
}

function createWindow () {
  createTray()
  let ses = session.defaultSession
  mainWindow = new BrowserWindow({
    width: 1600, height: 800,
    minWidth: 800, minHeight: 600,
    icon: 'trayTemplate@2x.ico',
    webPreferences: {
      plugins: true,
      contextIsolation: false,
      nodeIntegration: true
    }
  })
  mainWindow.setMenu(null)
  // 删掉原来放在这里的两行app.commandLine.appendSwitch配置
  mainWindow.loadURL('http://www.ardisialabs.com/demo/')
  mainWindow.on('closed',  () => {
    mainWindow = null
  })
  let wc = mainWindow.webContents
  wc.on('new-window', (e, url) => {
    // 原代码这里用了单引号,要改成反引号才能解析${url}变量
    console.log(`criando nova janela para ${url}`) 
  })
}

// 原有启动逻辑保持不变
app.whenReady().then(createWindow)

校验配置是否生效

应用启动后打开DevTools,在控制台输入navigator.plugins查看返回值,如果能看到Shockwave Flash的条目就说明配置成功。

内容的提问来源于stack exchange,提问作者Eduardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.17 16:16:01