繁体   English   中英

在Chrome扩展程序中触发快捷方式

[英]Trigger shortcut in a Chrome extension

我正在构建一个Chrome扩展程序,并将命令_execute_browser_action分配给Alt + J。 我想在background.js中模拟它,该监听使用

chrome.commands.onCommand.addListener(function(command) { /* ... */ });

我希望通过不同的命令快捷方式调用_execute_browser_action ,例如Cmd + Shift + K

在我的manifest.json文件中,我声明了以下内容:

"commands": {
    "_execute_browser_action": {
        "suggested_key": {
          "mac": "Alt+J",
          "linux": "Ctrl+Shift+J"
        }
    },
    "asdf" : {
        "suggested_key": {
          "default": "Ctrl+Shift+K",
          "mac": "Command+Shift+K"
        },
        "description": "asdf"
    }
  }

这是我的background.js:

chrome.commands.onCommand.addListener(function(command) {
  console.log('onCommand event received for message: ', command);
  if (command === "asdf") {
    alert("asdf");
    var keyPress = jQuery.Event("keypress");
    keyPress.altKey = true;
    keyPress.ctrlKey = false;
    keyPress.which = 74;
    //how do I trigger this?
  }
});

我想知道如何触发它,以便打开我的popup.html。

您无法自行触发键盘快捷键。

以这种方式将其视为事件的时间表:

  1. 发生硬件事件,操作系统将其转换为输入事件。
  2. 如果这是Chrome注册的全局快捷方式,或者如果Chrome是重点关注的,则OS会将事件调度到Chrome。
  3. Chrome浏览器会检查它是否为已注册的快捷方式。 如果是,则触发相应的事件。
  4. 如果不是快捷方式,并且页面处于焦点位置,Chrome会将事件作为DOM输入事件传递到页面中。
  5. 如果页面中有jQuery,它将把DOM事件转换成它自己的内部事件,匹配侦听器并将内部事件分配给它们。

您的代码仅触发5个(内部jQuery事件)。
通过直接处理DOM事件 ,您最多可以执行4次操作。
在任何情况下,扩展都不能在此堆栈中返回3。

您正在尝试通过代码以回旋方式打开弹出窗口。 可悲的是,对于“普通”扩展来说,这根本不可能的 ,这是Chrome开发人员团队的一项有意识的决定。

考虑另一种提供UI的方法,例如,使用内容脚本在当前页面中提供通知或注入内容

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM