【发布时间】:2014-04-13 00:44:19
【问题描述】:
在以下 Chrome 扩展程序中,我在按下快捷键时收到了两次键盘命令,但仅在浏览器弹出窗口打开时。复制它的方法如下:
- 安装以下 chrome 扩展。
- 导航到 Chrome 扩展程序页面
- 滚动到底部并点击“键盘快捷键”
- 将扩展的快捷键设置为 Alt+Shift+S
- 在扩展页面中,点击扩展的“后台页面”链接,打开后台页面控制台。
- 按 Alt+Shift+S。您会看到“命令”被记录一次。
- 现在打开安装扩展程序时应该出现的浏览器弹出窗口。按 Alt+Shift+S。
- 转到后台页面控制台,您会看到“命令”记录了两次。
代码如下:
manifest.json
{
"manifest_version": 2,
"name": "Test",
"version": "1.0",
"background": {
"scripts": ["background.js"]
},
"browser_action": {
"default_popup": "popup.html"
},
"commands": {
"command": {
"suggested_key": {
"default": "Alt+Shift+S"
},
"description": "My command"
}
}
}
background.js
chrome.commands.onCommand.addListener(function (command) {
console.log(command);
});
popup.html 不需要存在。为什么会这样?我有一个 hack,如果距离上一个命令不到 50 毫秒,我不接受命令,但我不想使用 hack。
【问题讨论】:
-
popup.html中有什么内容? -
@ExpertSystem 无论
popup.html是否存在,结果都是一样的。如果它不存在,则弹出窗口中不会加载任何内容。 -
恐怕我没有头绪:) 我自己无法测试它,因为我不在开发频道上(但我相信你)。我能想到的唯一可能的原因是快捷方式被弹出窗口和浏览器窗口“捕获”了,所以它触发了两次监听器——但这当然是纯粹的猜测。
标签: javascript google-chrome-extension