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及以下版本,否则任何配置都无法生效。
具体修改步骤
- 在文件顶部引入
path模块,用于拼接准确的绝对路径,避免相对路径寻址错误。 - 将Flash相关的两个命令行开关移动到
app.ready事件监听之前,同时修正dll路径为你实际存放的位置(代码文件夹外同级目录),版本号替换为dll的真实版本。 - 修正原有代码中模板字符串的语法错误,原代码用单引号包裹模板字符串会导致变量无法解析。
- 你已经在
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
相关产品推荐
相关产品推荐

