问题描述
如何通过 Manifest v3 访问页面的窗口变量。
在 V2 中,我可以让内容脚本通过将 javascript 注入主页来访问页面的 window 变量。但是,javascript 代码的 appendChild() 在 V3 上不起作用。
我尝试使用 scripting.executeScript 但这仍然无法访问窗口变量(DOM 可访问)。
例如,下面的代码应该在 frameid 0 上注入,但顶部 javascript 上下文的窗口仍然不可读:
chrome.tabs.query({ active: true,currentwindow: true },(tabs) => {
// since only one tab should be active and in the current window at once
// the return variable should only have one entry
const activeTab = tabs[0];
const activeTabId = activeTab.id; // or do whatever you need
chrome.scripting.executeScript({
target: { tabId: activeTabId,frameIds: [0] },files: [filePath],});
});
解决方法
也许我不太了解您的问题,但是:
1.如果您要访问的页面是页面扩展程序,则不必注入任何内容脚本来检索任何变量。
2. 如果您想获取已在选项卡中创建\设置的内容脚本变量,则必须向该选项卡中的内容脚本发送一条消息,要求将其值与该消息一起返回.
3.如果您想获得主页的变量(在您可能的内容脚本之外),由于孤立的世界规则,您没有任何希望。