chrome 扩展清单 v3,访问 window 变量
chrome extension manifest v3, accessing window variable
如何通过 Manifest v3 访问页面的 window 变量。
在 V2 中,我可以通过将 javascript 注入主页来让内容脚本访问页面的 window 变量。但是,javascript 代码的 appendChild() 不适用于 V3.
我尝试使用 scripting.executeScript 但这仍然无法访问 window 变量(DOM 是可访问的)。
例如,下面的代码应该在 frameid 0 上注入,但顶部 javascript 上下文的 window 仍然不可读:
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. 如果你想获得一个内容脚本变量,你在一个选项卡中有 created\set,你必须向该选项卡中的内容脚本发送消息询问return 它在该消息中的价值。
3. 如果你想获得主页的变量(从你可能的内容脚本中),你没有任何希望,因为孤立的世界规则。
如何通过 Manifest v3 访问页面的 window 变量。
在 V2 中,我可以通过将 javascript 注入主页来让内容脚本访问页面的 window 变量。但是,javascript 代码的 appendChild() 不适用于 V3.
我尝试使用 scripting.executeScript 但这仍然无法访问 window 变量(DOM 是可访问的)。
例如,下面的代码应该在 frameid 0 上注入,但顶部 javascript 上下文的 window 仍然不可读:
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. 如果你想获得一个内容脚本变量,你在一个选项卡中有 created\set,你必须向该选项卡中的内容脚本发送消息询问return 它在该消息中的价值。
3. 如果你想获得主页的变量(从你可能的内容脚本中),你没有任何希望,因为孤立的世界规则。