Javascript 弹出窗口打开时,Chrome扩展键盘命令触发两次

Javascript 弹出窗口打开时,Chrome扩展键盘命令触发两次,javascript,google-chrome-extension,Javascript,Google Chrome Extension,在下面的Chrome扩展中,当按下快捷键时,我会收到两次键盘命令,但只有当浏览器弹出窗口打开时才会收到。以下是您复制它的方式: 安装以下镀铬加长件。 导航到Chrome扩展页面 滚动到底部,然后单击键盘快捷键 将扩展名的快捷方式设置为Alt+Shift+S 在扩展页面中,单击扩展的后台页面链接以打开后台页面控制台。 点击Alt+Shift+S。您将看到命令被记录一次。 现在打开浏览器弹出窗口,它应该在安装扩展时出现。按Alt+Shift+S。 转到后台页面控制台,您将看到命令记录两次。 代码如下

在下面的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不需要存在。为什么会这样?我有一个黑客程序,如果距离上次命令不到50毫秒,我就不接受命令,但我不想使用黑客程序。

看起来这是Chrome的GTK版本的一个bug。您可以在这里看到我提交的错误报告:


这不会在GTK版本中修复,因为Chrome正在切换到Aura。

popup.html中有什么?@ExpertSystem无论popup.html是否存在,结果都是一样的。如果它不存在,弹出窗口中不会加载任何内容,这很好。我恐怕没有任何线索:我自己无法测试它,因为我不在开发频道,但我相信你。我能想到的唯一可能的原因是,快捷方式被弹出窗口和浏览器窗口捕获,因此它会触发侦听器两次-当然,这纯粹是猜测。