事件处理程序中的错误:ReferenceError:窗口未定义带有清单 v3 的 chrome 扩展 [重复]
2021-06-30
19212
我正在为 chrome 扩展程序使用清单版本 3,我在后台 js 中遇到此错误: 事件处理程序中的错误:ReferenceError:未使用清单 v3 定义窗口 chrome 扩展程序
"manifest_version":3, "permissions":["contextMenus","storage", "activeTab","tabs","scripting","webRequest"],
var posLeft = ( window.width - winWidth ) / 2 ;
3个回答
ManifestV3 扩展使用服务工作线程,因此它没有 DOM 或
window
。
- 使用 chrome.windows.getCurrent 获取当前浏览器窗口的大小/位置。
- 使用 chrome.system.display.getInfo (自 Chrome 94 起)获取显示器的大小/指标。
woxxom
2021-06-30
好吧,对于其他可能在类似情况下在此处查找该错误消息的人来说,当我忽略在运行时使
window
对象可访问时,而不是在注入函数动态准备通过 v3 后台脚本注入特定选项卡时,我遇到了相同的错误。
为了从 v3 后台脚本进行动态注入,选项卡特定对象(在本例中为
window
)需要包含在传递的函数内,如以下匿名函数情况所示:
chrome.scripting.executeScript({
target: { tabId: currentTab.id },
func: () => window.history.back()
});
如果
window.history.back
作为
func
的值提供,那么显然后台脚本将不知道或无法使用它,并且会出现相同的错误消息。
这确实已经在文档中进行了描述。
matanox
2021-08-28