同一台机器,Chrome 能打 Edge 不能:Lodop 在双核浏览器上到底怎么了
反馈经常是这样:装了、也启动了,Chrome 里能打,Edge 里提示未安装。
同一个人、同一台电脑、同一个系统,差别只在浏览器。这说明问题不在安装,在内核。
一张表看懂
| 浏览器 | 内核 | 老式控件通道 | 本机服务通道 |
|---|---|---|---|
| IE 11 | Trident | 能加载 | 能 |
| Edge(Chromium 版) | Chromium | 不能 | 能 |
| Chrome | Chromium | 不能 | 能 |
| 360 极速模式 | Chromium | 不能 | 能 |
| 360 兼容模式 | Trident(内嵌 IE) | 能,但内核很老 | 能 |
| 麒麟/统信上的浏览器 | Chromium 系 | 不能 | 看厂商是否提供对应版本 |
看第三列:只要不是 IE 内核,老式插件/控件通道就用不了。 这跟装没装、装了几遍完全无关。
为什么「兼容模式」能凑合
国产双核浏览器切到兼容模式时,实际上是启动了一个内嵌的 IE 内核。控件能加载,打印能出纸,所以很多单位用这个方式续了很多年。
但这条路的三个隐患要清楚:
- 内嵌 IE 的内核版本很老,行为跟当年不完全一样
- 需要用户手动切模式,或者站点做特殊引导,体验割裂
- 国产操作系统上没有 IE 内核,这条路直接断
所以它是过渡手段,不适合当长期方案------这句话不针对任何产品,是针对「内嵌 IE」这个技术事实。
怎么判断当前在哪个内核
前端一行代码就能看出来:
js
const ua = navigator.userAgent
const isIE = /Trident|MSIE/.test(ua)
console.log(isIE ? 'IE 内核' : 'Chromium 内核')
360 这类双核浏览器切换模式时 UA 会变,所以这个方法对判断「当前是哪个模式」有效。
正确的解题顺序
- 先问:现在的页面走的是哪条通道?
引用了控件安装包的,就是老通道;引用了本机服务地址的,就是服务通道。 - 再看目标浏览器内核。
非 IE 内核却还在用老通道,必然提示未安装。 - 结论:换通道,不是换安装包。
服务通道的写法,各家 API 不同,逻辑都一样------页面把内容交给本机进程:
js
import webPrintPdf from 'web-print-pdf'
// 页面侧只发任务,不关心浏览器内核
await webPrintPdf.printHtml(
'<div>出库单 SO-1029</div>',
{ paperFormat: 'A4', printBackground: true },
{ printerName: 'HP LaserJet Pro' },
{ action: 'print' }
)
这条路在 Chrome、Edge、双核浏览器的极速模式下都能跑,因为它不依赖插件。
企业环境的额外注意
- 浏览器版本能不能锁:能锁就锁,锁不住就要接受「每次升级都要回归一次」
- 域策略:有的单位强制 Edge 并禁用 IE 模式,兼容模式那条退路随时会消失
- 多浏览器共存:业务系统要求 Chrome、OA 要求 IE,这类机器上两套通道都得留着
排障表
| 现象 | 判断 |
|---|---|
| Chrome 能打,Edge 不能 | 老通道 + 非 IE 内核 |
| 极速模式不行,兼容模式行 | 同上 |
| 昨天行今天不行 | 浏览器自动升级了 |
| 换台电脑就行 | 那台机器的浏览器版本或安全策略不同 |
| 全单位同时不行 | 域策略推送了新版本 |
最后
「Chrome 能打 Edge 不能」从来不是安装问题,是内核与通道的匹配问题。
记住一句:IE 内核之外,只有服务通道走得通。 判断完内核,答案就出来了。