提问人:syydi 提问时间:11/15/2023 最后编辑:syydi 更新时间:11/15/2023 访问量:32
Chrome 扩展程序 V3 - 弹出窗口关闭时继续进程
Chrome extension V3 - continue process when popup closes
问:
StackOverflow 上还有其他类似的问题,但我认为我有一个独特的案例。
我正在使用 React 创建一个 Chrome 扩展程序。该扩展程序从服务器请求数据,并在特定网站上填写表单。扩展可以通过单击按钮在视图之间移动。该过程可能需要几分钟时间。我希望用户能够在进程运行时使用其他浏览器选项卡/窗口,但目前如果用户单击,弹出窗口将关闭并终止进程。
目前,这一切都使用 React 工作。当代理按下按钮时,将找到正确的 Executor 类,并在其上调用方法。但是,当用户单击离开时,弹出窗口将关闭,进程将被终止。我发现了一个提示,即使用 chrome/window 侦听器,如果使用侦听器,扩展程序应该保持/处于活动状态。
我尝试将执行器调用放在 Service Worker 中。但是,Executor 使用的库内部需要 window 对象,并且由于后台进程无法访问它,我收到错误(未定义窗口)。
然后我尝试使用内容脚本来调用执行器。当进程尝试单击按钮时,它会使用 调用答题器脚本。Content-scripts 无法使用脚本 API,我再次收到错误(executeScript 不是函数)。chrome.scripting.executeScript
如何执行该过程,以便在弹出窗口关闭时不会被杀死?
编辑:库中的 Window 属性
declare global {
interface Window {
__SOMETHING__?: boolean;
}
}
库中的错误被抛出一行
if (!window.__SOMETHING__) {
答: 暂无答案
评论
window
self.window = self
self.window = self
self.window = self
Uncaught TypeError: Cannot set property window of #<Window> which has only a getter
if (!self.window) self.window = self
import