在浏览器扩展开发中,"main world" 是指 JavaScript 运行环境中的全局作用域。当一个网页被加载时,浏览器会创建一个全局对象(通常是 window
对象),该对象包含了该页面的所有全局变量、函数和对象。"main world" 是页面原始脚本(例如来自 HTML、JavaScript 文件等)所运行的环境。
然而,当你使用浏览器扩展(如 Plasmo)开发时,扩展的内容脚本通常运行在一个被称为 "isolated world" 的独立环境中。"isolated world" 是浏览器创建的一个隔离的 JavaScript 上下文,可以防止扩展脚本与网页脚本之间的变量、函数或对象冲突。尽管隔离的世界可以访问 DOM,但它不能直接访问或修改 "main world" 中的全局对象。
在某些情况下,你可能需要修改 "main world" 中的全局对象,例如向页面注入自定义函数或修改现有全局变量。为了实现这一点,Plasmo 允许你通过设置 world
属性为 "MAIN",将内容脚本注入到 "main world",从而可以访问和修改全局对象。
import type { PlasmoCSConfig } from "plasmo"
export const config: PlasmoCSConfig = {
matches: ["<all_urls>"],
world: "MAIN"
}