firefox 78+彻底移除插件支持且默认禁用协议调用,需确认网站是否使用已弃用的activexobject/navigator.plugins;若存在报错,须升级为web api方案;否则需注册uri协议、在about:config中启用network.protocol-handler.external.*并关闭warn-external提示。

火狐浏览器访问网页时点击按钮无法启动本地程序(如PDF阅读器、Excel、自定义exe),控制台无报错但行为静默失效,本质是Firefox自78版起彻底移除了对navigator.plugins和ActiveXObject的支持,且默认禁用所有协议处理器注册调用。
确认网站是否在尝试调用已弃用的插件机制
打开开发者工具(F12)→ 切换到“控制台” → 刷新页面 → 查看是否有ReferenceError: ActiveXObject is not defined或TypeError: navigator.plugins is not iterable报错。若有,说明网站代码仍使用IE时代的老式COM对象调用逻辑,Firefox 115+版本完全不兼容,必须联系网站方升级为Web API方案(如File System Access API或Web Share API)。
这一步操作起来很简单,直接按F12就能看到结果,不需要额外安装插件或修改配置。
检查并启用指定协议的外部程序关联
Firefox仅允许通过标准URI scheme(如mailto:、tel:、myapp:)调用本地程序,且必须提前在系统中注册该协议,并在Firefox内显式授权。
第一步:确认你的本地程序已正确注册协议。以Windows为例,用管理员权限运行PowerShell,执行:Get-ItemProperty HKCU:SoftwareClassesmyapp -ErrorAction SilentlyContinue,若返回空则未注册;macOS需检查~/Library/Preferences/com.apple.LaunchServices.plist中是否含myapp条目。
第二步:在Firefox地址栏输入about:config→ 回车→ 点击“接受风险并继续”→ 搜索network.protocol-handler.external.myapp(将myapp替换为你实际使用的协议名)→ 若不存在,右键→ 新建→ 布尔值→ 名称填完整键名→ 值设为true。
第三步:搜索network.protocol-handler.warn-external.myapp→ 双击设为false。【漏掉这一步会导致每次调用都弹出拦截提示,用户点击“允许一次”后仍不会记住选择】。
绕过限制的临时调试方案(仅限开发环境)
方法一:启用本地文件协议白名单(file://)调用能力
在about:config中搜索security.fileuri.strict_origin_policy→ 双击设为false→ 彻底关闭所有Firefox进程后重启。此设置仅对双击打开的本地HTML文件有效,对http(s)://站点无效。
方法二:强制注册协议处理器(需手动修改prefs.js)
关闭Firefox → 进入配置目录(Windows:%APPDATA%MozillaFirefoxProfiles*.default-release)→ 用文本编辑器打开prefs.js → 在末尾添加两行:user_pref("network.protocol-handler.expose.myapp", true);user_pref("network.protocol-handler.app.myapp", "C:\path\to\your\app.exe");
注意路径中的反斜杠必须是双写\,单引号或中文路径会导致解析失败。
方法三:Linux/macOS下通过shell脚本桥接
创建/usr/local/bin/launch-myapp,内容为#!/bin/sh && open -a "MyApp" "$1"(macOS)或xdg-open "$1"(Linux),然后在prefs.js中将network.protocol-handler.app.myapp指向该脚本路径。











