如何使用键盘快捷键 activate/deactivate chrome 扩展(开发)
How to activate/deactivate chrome extension with keyboard shortcut (development)
我正在尝试为 active/deactivate 我正在开发的 Chrome 扩展程序设置键盘快捷键。 Chrome 扩展仅包含在某些站点上运行的“content_script”。我希望它完全 activate/deactivate 扩展,就像我要通过 Chrome://extensions.
禁用它一样
在寻找答案时,我看到很多建议将“_execute_browser_action”添加到我的 manifest.json,但我认为此命令需要一个监听器,需要在 background.js(如果我错了请纠正我)。如果可能,我想避免使用 background.js,因为我想让这个扩展名简短而有趣。
这是我的 manifest.json:
{
"manifest_version": 2,
"name": "foo",
"description": "foo",
"version": "0.1.0",
"commands": {
"_execute_browser_action": {
"suggested_key": {
"default": "Ctrl+Shift+8"
}
}
},
"content_scripts": [{
"js": ["./dist/bundle.js"],
"matches": [ ...certain sites... ]
}],
"icons": {
"16": "/icons/logo16.png",
"32": "/icons/logo32.png",
"48": "/icons/logo48.png",
"128": "/icons/logo128.png"
}
}
有了这个 manifest.json,快捷方式显示在 Chrome://extensions/shortcuts 中,但快捷方式什么都不做。当我按下组合键时,没有任何反应。即使我刷新页面、重新加载扩展、重新捆绑、重新启动 Chrome 等
我应该如何添加这个键盘快捷键?
此外,如果有帮助,我正在使用 Babel/Webpack。
我最终解决了自己的问题。在这里更新以防对其他人有帮助。
结果 background.js 正是我要找的。我的后台脚本设置了一个 chrome.storage API 字段,由 browserAction 触发,我的 content_script 然后摄取它以切换它 on/off。然后刷新页面更新页面html。 (灵感来自 here)
background.js:
var x = true
enableBrowserAction()
function disableBrowserAction() {
chrome.storage.local.set({enabled: false})
}
function enableBrowserAction() {
chrome.storage.local.set({enabled: true})
}
function updateState() {
if (x == false) {
x = true
enableBrowserAction()
} else {
x = false
disableBrowserAction()
}
chrome.tabs.reload()
}
chrome.browserAction.onClicked.addListener(updateState)
manifest.json(只有必要的字段):
{
"manifest_version": 2,
"browser_action": {},
"commands": {
"_execute_browser_action": {
"suggested_key": {
"default": "Ctrl+Shift+8"
}
}
},
"permissions": [
"storage"
],
"background": {
"scripts": ["background.js"]
},
"content_scripts": [{
"js": ["./dist/bundle.js"],
"matches": [ ...certain sites... ]
}]
}
content_script(bundle.js 的条目):
import ServiceHandler from './ServiceHandler.js'
chrome.storage.local.get('enabled', data => {
if (data.enabled) {
const sh = new ServiceHandler()
sh.execute()
}
})
我正在尝试为 active/deactivate 我正在开发的 Chrome 扩展程序设置键盘快捷键。 Chrome 扩展仅包含在某些站点上运行的“content_script”。我希望它完全 activate/deactivate 扩展,就像我要通过 Chrome://extensions.
禁用它一样在寻找答案时,我看到很多建议将“_execute_browser_action”添加到我的 manifest.json,但我认为此命令需要一个监听器,需要在 background.js(如果我错了请纠正我)。如果可能,我想避免使用 background.js,因为我想让这个扩展名简短而有趣。
这是我的 manifest.json:
{
"manifest_version": 2,
"name": "foo",
"description": "foo",
"version": "0.1.0",
"commands": {
"_execute_browser_action": {
"suggested_key": {
"default": "Ctrl+Shift+8"
}
}
},
"content_scripts": [{
"js": ["./dist/bundle.js"],
"matches": [ ...certain sites... ]
}],
"icons": {
"16": "/icons/logo16.png",
"32": "/icons/logo32.png",
"48": "/icons/logo48.png",
"128": "/icons/logo128.png"
}
}
有了这个 manifest.json,快捷方式显示在 Chrome://extensions/shortcuts 中,但快捷方式什么都不做。当我按下组合键时,没有任何反应。即使我刷新页面、重新加载扩展、重新捆绑、重新启动 Chrome 等
我应该如何添加这个键盘快捷键?
此外,如果有帮助,我正在使用 Babel/Webpack。
我最终解决了自己的问题。在这里更新以防对其他人有帮助。
结果 background.js 正是我要找的。我的后台脚本设置了一个 chrome.storage API 字段,由 browserAction 触发,我的 content_script 然后摄取它以切换它 on/off。然后刷新页面更新页面html。 (灵感来自 here)
background.js:
var x = true
enableBrowserAction()
function disableBrowserAction() {
chrome.storage.local.set({enabled: false})
}
function enableBrowserAction() {
chrome.storage.local.set({enabled: true})
}
function updateState() {
if (x == false) {
x = true
enableBrowserAction()
} else {
x = false
disableBrowserAction()
}
chrome.tabs.reload()
}
chrome.browserAction.onClicked.addListener(updateState)
manifest.json(只有必要的字段):
{
"manifest_version": 2,
"browser_action": {},
"commands": {
"_execute_browser_action": {
"suggested_key": {
"default": "Ctrl+Shift+8"
}
}
},
"permissions": [
"storage"
],
"background": {
"scripts": ["background.js"]
},
"content_scripts": [{
"js": ["./dist/bundle.js"],
"matches": [ ...certain sites... ]
}]
}
content_script(bundle.js 的条目):
import ServiceHandler from './ServiceHandler.js'
chrome.storage.local.get('enabled', data => {
if (data.enabled) {
const sh = new ServiceHandler()
sh.execute()
}
})