我踩了 72 小时的 Electron webview PDF 灰色坑,只为告诉你:别写这行代码!

这辈子都不想再看到那个该死的灰色背景了!

症状(你绝对中过)

  • 背景是经典 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

复制代码

验证链接(随便点都亮)

  1. 国际标准:
  2. 国内防盗链:
  3. 企业内网签名链接:随便多长都行

删掉那行毒代码 + 加好 partition → 全部秒显示!

总结(只记这三句话)

  1. 永远不要在主进程写 session.fromPartition('xxx', { cache: false })
  2. PDF webview 必须加 partition="persist:pdfviewer"
  3. 想禁用缓存的 webview 单独加 partition="nocache"

做完这三步,从此与灰色背景永别!

把这篇文章收藏起来,半年后你会含着泪点开它,然后感谢现在的自己

(已救无数后来人,包括半年后的你)

相关推荐
IT_陈寒9 小时前
为什么你应该学习JavaScript?
前端·人工智能·后端
大龄秃头程序员9 小时前
iOS冷启动监控Demo
前端
光影少年9 小时前
为什么 JavaScript 中 0.1 + 0.2 !== 0.3,如何让其相等?
前端·javascript·算法
掘金酱10 小时前
[稀土掘金 × 火山引擎] AI用量周榜冲刺赛|获奖名单公示
前端·人工智能·后端
泡泡oO10 小时前
“如果你还在用Superpowers,那我不要和你说话”
前端·后端·全栈
维克兜率天10 小时前
趋势过滤:避免被“假突破“反复打脸
前端
8年区块链老兵11 小时前
一篇文章教会你:用区块高度读懂比特币链上的每一笔交易
前端
xixichensh11 小时前
前端转做AI程序员第一步——开发一个AI流式对话Demo
前端
梓雨枔11 小时前
JavaScript+快速学习,简单好用~
javascript·学习
木易 士心11 小时前
JavaScript 闭包原理和实践深度解析
开发语言·javascript·ecmascript