Jervis2049 / vite-plugin-crx-mv3

Build a Chrome Extension with Vite⚡
201 stars 30 forks source link

content_scripts "world": "MAIN" 报错 #26

Open 724493602 opened 1 year ago

724493602 commented 1 year ago

manifest 中 content_scripts 在"world" = "MAIN" 时 没有chrome.runtime对象,引发报错

Jervis2049 commented 1 year ago

不知道"world" = "MAIN"是什么,可否描述更清楚一些,比如给出报错的截图,或贴出相关的代码逻辑。

724493602 commented 1 year ago

{ "js": ["dist/main.js"], "world": "MAIN" }, "world"= "MAIN"时,会在沙盒环境中运行,这是的脚本没有windows

724493602 commented 1 year ago

是没有chrome.runtime,说错了

Jervis2049 commented 1 year ago

感谢您提出的问题,我知道原因了,我提供的插件暂时实现不了这个,短期内还改不了。

Jervis2049 commented 1 year ago

还没用过这个"world"= "MAIN" , 想请教一下是用于什么场景的。我或许可以做个区分,如果有"world"= "MAIN" ,打包时对这个content_scripts做不同的处理。

724493602 commented 1 year ago

获取当前的window 环境,我们有个场景是操作某个网站的编辑器,这个编辑器是挂载在window上,必须要 word=main 才能获取到。这时候这个content_scripts是不是就 IIFE 加载就好了

Jervis2049 commented 1 year ago

获取当前的window 环境,我们有个场景是操作某个网站的编辑器,这个编辑器是挂载在window上,必须要 word=main 才能获取到。这时候这个content_scripts是不是就 IIFE 加载就好了

这个场景不声明"word": "main", 在content_scripts里面注入一个injected.js应该也能达到目的吧? 如这个例子所示examples/crx-webAccessibleResources/content.js , 先看看是否可行

const script = document.createElement('script')
script.src = chrome.runtime.getURL('injected.ts')
;(document.head || document.documentElement).appendChild(script)