自定义 chrome 扩展快捷方式无效
Custom chrome extension shortcuts not working
我正在创建自己的 chrome 扩展程序。我希望能够 运行 单击快捷方式后的脚本。我的清单如下所示:
{
"name": "Test",
"version": "0.0.1",
"manifest_version": 2,
"description": "Test ext",
"homepage_url": "",
"icons": {
"16": "icons/test-icon.jpg",
"48": "icons/test-icon.jpg",
"128": "icons/test-icon.jpg"
},
"default_locale": "en",
"background": {
"scripts": ["src/bg/background.js"],
"persistent": true
},
"commands":{
"run-script": {
"suggested_key": {
"default": "Ctrl+E",
"windows": "Ctrl+E",
"mac": "Command+E"
},
"description": "Run",
"global": true
}
},
"browser_action": {
"default_icon": "icons/test-icon.jpg",
"default_title": "browser action demo",
"default_popup": "src/browser_action/browser_action.html"
},
"permissions": ["tabs", "https://*/*", "storage"],
"content_scripts": [
{
"matches": [
"https://www.test.co.uk/*"
],
"js": ["src/inject/inject.js"]
}
]
}
所以我有带有简单 UI 和开始按钮的扩展。我希望能够使用 CTRL+E 或 CMD+E 到 运行 之后的脚本。当我转到 chrome 设置中的扩展程序时,我看到快捷方式:
据我所知,我应该得到 console.log
并且我正在后台控制台中得到它。但是,如果我想使用该快捷方式将实际页面更改为另一个页面怎么办?我怎样才能做到这一点?这不起作用:
chrome.commands.onCommand.addListener((command) => {
location.replace(
`https://www.solebox.com/en_GB/checkout?stage=shipping#shipping`
);
});
什么都没发生。
Ctrl+E
是chrome自己注册的快捷方式,可以试试Ctrl+Q
.
打开服务 worker/background 脚本的控制台也很重要,日志会显示在这里。
// background.js
chrome.commands.onCommand.addListener((command) => {
// location.replace(...)
chrome.tabs.query({active: true}, function(tabs) {
chrome.tabs.update(tabs[0].id, {url: 'https://...'});
});
});
通过制作修复:
chrome.commands.onCommand.addListener((command) => {
chrome.tabs.update({
url: `https://www.google.com`,
});
});
据我所知,我不能在 background.js
中使用 location.replace
或任何其他 js 方法。我必须只使用 chrome 命令来切换页面,然后使用我的 inject.js
文件在页面上进行一些更改。
我正在创建自己的 chrome 扩展程序。我希望能够 运行 单击快捷方式后的脚本。我的清单如下所示:
{
"name": "Test",
"version": "0.0.1",
"manifest_version": 2,
"description": "Test ext",
"homepage_url": "",
"icons": {
"16": "icons/test-icon.jpg",
"48": "icons/test-icon.jpg",
"128": "icons/test-icon.jpg"
},
"default_locale": "en",
"background": {
"scripts": ["src/bg/background.js"],
"persistent": true
},
"commands":{
"run-script": {
"suggested_key": {
"default": "Ctrl+E",
"windows": "Ctrl+E",
"mac": "Command+E"
},
"description": "Run",
"global": true
}
},
"browser_action": {
"default_icon": "icons/test-icon.jpg",
"default_title": "browser action demo",
"default_popup": "src/browser_action/browser_action.html"
},
"permissions": ["tabs", "https://*/*", "storage"],
"content_scripts": [
{
"matches": [
"https://www.test.co.uk/*"
],
"js": ["src/inject/inject.js"]
}
]
}
所以我有带有简单 UI 和开始按钮的扩展。我希望能够使用 CTRL+E 或 CMD+E 到 运行 之后的脚本。当我转到 chrome 设置中的扩展程序时,我看到快捷方式:
据我所知,我应该得到 console.log
并且我正在后台控制台中得到它。但是,如果我想使用该快捷方式将实际页面更改为另一个页面怎么办?我怎样才能做到这一点?这不起作用:
chrome.commands.onCommand.addListener((command) => {
location.replace(
`https://www.solebox.com/en_GB/checkout?stage=shipping#shipping`
);
});
什么都没发生。
Ctrl+E
是chrome自己注册的快捷方式,可以试试Ctrl+Q
.
打开服务 worker/background 脚本的控制台也很重要,日志会显示在这里。
// background.js
chrome.commands.onCommand.addListener((command) => {
// location.replace(...)
chrome.tabs.query({active: true}, function(tabs) {
chrome.tabs.update(tabs[0].id, {url: 'https://...'});
});
});
通过制作修复:
chrome.commands.onCommand.addListener((command) => {
chrome.tabs.update({
url: `https://www.google.com`,
});
});
据我所知,我不能在 background.js
中使用 location.replace
或任何其他 js 方法。我必须只使用 chrome 命令来切换页面,然后使用我的 inject.js
文件在页面上进行一些更改。