这辈子都不想再看到那个该死的灰色背景了!
症状(你绝对中过)
- 背景是经典 PDF 灰色,但内容永远不显示
- 连最干净的 dummy.pdf 都只给灰色
- plugins: true、webSecurity: false、sandbox: false、contextIsolation: false 全开了也没用
- 甚至加了 app.commandLine.appendSwitch('enable-pdf-extension') 这发核弹都不行
- 你已经快疯了
终极元凶(就是它!)
JavaScript
php
// 主进程里偷偷出现过这行代码,就是它毒死了你整个应用!
session.fromPartition('nocache', { cache: false })
只要这行代码执行过一次,整个默认 session 就被永久污染,PDF Viewer 插件直接原地去世,永不翻身!
正确做法(三步永绝后患)
第一步:立刻删除这行毒代码(必须删,别注释!)
JavaScript
arduino
// 删掉!删掉!删掉!重要的事情说三遍
// session.fromPartition('nocache', { cache: false })
第二步:重启软件(必须重启!不清毒永远灰)
被污染的默认 session 只有重启才能清掉。
第三步:以后这样写就天下太平
HTML
css
style="width:100%; height:100vh;"
>
>
为什么加 partition 就活了?
因为 partition="persist:pdfviewer" 给 webview 开了一个全新的、从未被 { cache: false } 污染过的、持久化的独立 session,PDF 插件终于能正常加载了!
亲测有效的终极配置(直接抄)
JavaScript
yaml
// main.js(主窗口随便怎么安全都行)
new BrowserWindow({
webPreferences: {
webviewTag: true,
// contextIsolation: true 全开也没事,随便玩
}
})
HTML
验证链接(随便点都亮)
- 国际标准:
- 国内防盗链:
- 企业内网签名链接:随便多长都行
删掉那行毒代码 + 加好 partition → 全部秒显示!
总结(只记这三句话)
- 永远不要在主进程写 session.fromPartition('xxx', { cache: false })
- PDF webview 必须加 partition="persist:pdfviewer"
- 想禁用缓存的 webview 单独加 partition="nocache"
做完这三步,从此与灰色背景永别!
把这篇文章收藏起来,半年后你会含着泪点开它,然后感谢现在的自己
(已救无数后来人,包括半年后的你)