【问题标题】:Chrome extension keyboard command firing twice when popup is open弹出窗口打开时 Chrome 扩展键盘命令触发两次
【发布时间】:2014-04-13 00:44:19
【问题描述】:

在以下 Chrome 扩展程序中,我在按下快捷键时收到了两次键盘命令,但仅在浏览器弹出窗口打开时。复制它的方法如下:

  1. 安装以下 chrome 扩展。
  2. 导航到 Chrome 扩展程序页面
  3. 滚动到底部并点击“键盘快捷键”
  4. 将扩展的快捷键设置为 Alt+Shift+S
  5. 在扩展页面中,点击扩展的“后台页面”链接,打开后台页面控制台。
  6. 按 Alt+Shift+S。您会看到“命令”被记录一次。
  7. 现在打开安装扩展程序时应该出现的浏览器弹出窗口。按 Alt+Shift+S。
  8. 转到后台页面控制台,您会看到“命令”记录了两次。

代码如下:

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


【解决方案1】:

看起来这是 Chrome 的 GTK 版本的错误。您可以在此处查看我提交的错误报告:https://code.google.com/p/chromium/issues/detail?id=355559

这不会在 GTK 版本中修复,因为 Chrome 无论如何都会切换到 Aura。

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多