gpt4 book ai didi

javascript - Chrome 扩展程序中的触发快捷方式

转载 作者:行者123 更新时间:2023-11-29 10:08:41 26 4
gpt4 key购买 nike

我正在构建一个 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 处于焦点状态,则操作系统会将事件分派(dispatch)给 Chrome。
  3. Chrome 会检查它是否是已注册的快捷方式。如果是,则触发相应的事件。
  4. 如果不是快捷方式,并且页面处于焦点状态,Chrome 会将事件作为 DOM 输入事件传递到页面中。
  5. 如果页面中有 jQuery,它会将 DOM 事件转换为自己的内部事件,匹配监听器并将内部事件分派(dispatch)给它们。

您的代码仅触发 5 个(内部 jQuery 事件)。
通过 directly manipulating DOM events ,最多可以增加 4 个。
在任何情况下,扩展都不能返回到此堆栈中的 3。

您正在尝试通过代码以迂回方式打开弹出窗口。可悲的是,这是 simply not possible at all对于“普通”扩展 - 部分 Chrome 开发团队的有意识决定。

考虑另一种提供 UI 的方式,例如 notifications或使用 Content Scripts 在当前页面中注入(inject)内容.

关于javascript - Chrome 扩展程序中的触发快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37993631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com