我踩了 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"

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

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

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

相关推荐
梦帮科技1 天前
Node.js配置生成器CLI工具开发实战
前端·人工智能·windows·前端框架·node.js·json
VT.馒头1 天前
【力扣】2695. 包装数组
前端·javascript·算法·leetcode·职场和发展·typescript
css趣多多1 天前
一个UI内置组件el-scrollbar
前端·javascript·vue.js
-凌凌漆-1 天前
【vue】pinia中的值使用 v-model绑定出现[object Object]
javascript·vue.js·ecmascript
C澒1 天前
前端整洁架构(Clean Architecture)实战解析:从理论到 Todo 项目落地
前端·架构·系统架构·前端框架
C澒1 天前
Remesh 框架详解:基于 CQRS 的前端领域驱动设计方案
前端·架构·前端框架·状态模式
Charlie_lll1 天前
学习Three.js–雪花
前端·three.js
onebyte8bits1 天前
前端国际化(i18n)体系设计与工程化落地
前端·国际化·i18n·工程化
C澒1 天前
前端分层架构实战:DDD 与 Clean Architecture 在大型业务系统中的落地路径与项目实践
前端·架构·系统架构·前端框架
BestSongC1 天前
行人摔倒检测系统 - 前端文档(1)
前端·人工智能·目标检测