跳到主要内容

隔离世界与主世界

这是 Chromium 在同一份文档上提供的多个 JavaScript 环境。Electron 的上下文隔离使用了和扩展内容脚本相同的机制。

  • 主世界(Main World):页面自己的脚本所在的世界。contextBridge.exposeInMainWorld 的名字就表示把 API 放到这个世界的 window 上。世界 id 是 0。
  • 隔离世界(Isolated World):预加载脚本所在的世界。它有自己的全局对象和内置原型。Electron 为上下文隔离保留的世界 id 是 999。自定义隔离世界从 1000 起。

两个世界看见的 DOM 是同一棵树,所以预加载脚本可以查询页面元素。它们看不见对方的全局变量。

开发者工具 Console 顶部的上下文下拉框里,可以切到 Electron Isolated Context,在预加载脚本的世界里执行表达式。

webFrame.executeJavaScriptInIsolatedWorld(worldId, scripts) 在指定世界执行代码。传入 0 就和在页面主世界执行相同。

相关文档​