首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >后台页面运行,但弹出窗口显示“您没有后台页面。”使用getBackgroundPage()

后台页面运行,但弹出窗口显示“您没有后台页面。”使用getBackgroundPage()
EN

Stack Overflow用户
提问于 2022-10-27 15:43:11
回答 2查看 95关注 0票数 0

对于Chrome扩展,我有一个非常简单的背景页面:

代码语言:javascript
运行
复制
chrome.runtime.onInstalled.addListener((reason) => {
  console.log(reason);
});

当加载我的扩展时,后台页面将运行:

该扩展还有一个弹出窗口,运行getBackgroundPage(),使用:

代码语言:javascript
运行
复制
const serviceWorkerWindow = await chrome.runtime.getBackgroundPage();

但以下几个方面都失败了:

代码语言:javascript
运行
复制
Uncaught (in promise) Error: You do not have a background page.

我如何使getBackgroundPage()工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-28 09:57:06

基于@wOxxOm的评论回答我自己的问题。如果wOxxOm自己写了答案,我会把它标记为正确的。

我的期望基于Google的文档getBackgroundPage()

检索运行在当前扩展/应用程序中的背景页的JavaScript 'window‘对象。

在现代JS术语中,这将是服务工作者的globalThis (服务工作者在清单v3中仍然被称为background )。

正如wOxxOm所说。

这个API不能工作。这些文档只是过时了,因为ManifestV3团队只有几个开发人员,他们没有时间做所有事情。

本质上,Chrome扩展文档没有得到充分的维护。有一个应该和服务人员一起工作 -谢谢@erosman。弹出窗口和后台服务工作人员之间进行通信的最佳方法是通过扩展消息传递。Ie:

代码语言:javascript
运行
复制
chrome.runtime.sendMessage()

和:

代码语言:javascript
运行
复制
chrome.runtime.onMessage.addListener()
票数 0
EN

Stack Overflow用户

发布于 2022-10-27 16:09:15

getBackgroundPage()方法不检索后台脚本,而是对象与后台脚本关联。。如您所知,Manifest V3不使用后台脚本,而是使用服务工作者。根据定义,服务工作者是没有访问窗口对象的权限

你的用例是什么?也许我可以建议另一种方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74224782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档