Chrome 扩展 V3 - Service Worker 困惑
Chrome Extension V3 - Service Worker Confusion
之前从未进行过 Chrome 扩展。我对服务人员感到困惑。我想要做的就是当用户点击扩展图标时,运行 一些 JavaScript 操纵 DOM。我的 background.js 脚本确实被识别为服务工作者。
"background": {
"service_worker": "./background.js"
},
我不明白的是(在看了一堆 Youtube 视频之后)我的 background.js 文件应该如何构建?我只是想让它加载我的 content.js 文件。我在下面有一些模拟的例子来提供一个想法。
chrome.tabs.[some api event]((tabId, changeInfo, tab) => {
if (changeInfo.status === 'complete') {
chrome.scripting.executeScript({
target: { tabId: tabId },
files: ["./content.js"
})
}
});
我不知道在 service worker 文件中做什么?我是否只注册 service worker 然后执行我的 content.js 文件?甚至不确定在 API 中使用哪个事件是正确的,只是 运行 我的 content.js?非常感谢任何有助于我进一步理解这一点的输入或页面链接。
您需要 chrome.action API 及其 onClicked 事件 + executeScript,而不是 chrome.tabs。
manifest.json:
"action": {"default_title": "Click me"},
"background": {"service_worker": "background.js"},
"permissions": ["scripting", "activeTab"],
background.js(自动注册,无需显式注册)。
chrome.action.onClicked.addListener(tab => {
chrome.scripting.executeScript({
target: {tabId: tab.id},
files: ['content.js'],
});
});
content.js:
// here you can access the web page DOM
console.log('Yay');
之前从未进行过 Chrome 扩展。我对服务人员感到困惑。我想要做的就是当用户点击扩展图标时,运行 一些 JavaScript 操纵 DOM。我的 background.js 脚本确实被识别为服务工作者。
"background": {
"service_worker": "./background.js"
},
我不明白的是(在看了一堆 Youtube 视频之后)我的 background.js 文件应该如何构建?我只是想让它加载我的 content.js 文件。我在下面有一些模拟的例子来提供一个想法。
chrome.tabs.[some api event]((tabId, changeInfo, tab) => {
if (changeInfo.status === 'complete') {
chrome.scripting.executeScript({
target: { tabId: tabId },
files: ["./content.js"
})
}
});
我不知道在 service worker 文件中做什么?我是否只注册 service worker 然后执行我的 content.js 文件?甚至不确定在 API 中使用哪个事件是正确的,只是 运行 我的 content.js?非常感谢任何有助于我进一步理解这一点的输入或页面链接。
您需要 chrome.action API 及其 onClicked 事件 + executeScript,而不是 chrome.tabs。
manifest.json:
"action": {"default_title": "Click me"},
"background": {"service_worker": "background.js"},
"permissions": ["scripting", "activeTab"],
background.js(自动注册,无需显式注册)。
chrome.action.onClicked.addListener(tab => {
chrome.scripting.executeScript({
target: {tabId: tab.id},
files: ['content.js'],
});
});
content.js:
// here you can access the web page DOM
console.log('Yay');