我有一个webapp,可以使用某些流行的浏览器查看,我需要支持处理某些按键事件。我们的用户将使用Windows,而按键事件始终使用 Alt 键作为修饰符。
对keyUp / keyDown事件处理没有特定要求,用户只需要感觉他/她按下时会发生某些事情,例如 Alt - F
我们如何在我们需要支持的Firefox浏览器中完成此操作?
问题: 当FireFox菜单栏可见(文件,编辑...),按下菜单栏已声明的 Alt 组合键时,我们所有的实施尝试都受到干扰(例如: Alt - f )将导致相应的菜单展开。我们不希望这种情况发生。我已经看到了不会遇到这个问题的网络应用程序(使用成千上万行javascript ....)的例子,所以我知道这是可能的,但我不知道这是怎么做的我亲眼见过的例子。
我可以在网上找到几十个关于如何在JS中编写alt-key处理程序的例子,但是我还没有找到关于这个问题的单篇文章,或者在我和#的情况下工作的单个代码示例39;描述。我们正在使用Spring-MVC和最新版本的jQuery,如果这很重要的话。
非常感谢您的帮助,我很高兴用其他任何证明相关的信息来更新问题。
关于解决方案建议的附注: 请求者特别要求我使用Alt键作为修饰符,理由是他们在FireFox中使用其他webapps,其中菜单栏都可见并且 alt 键组合起作用。 (示例: Alt - s )。因此,如果您愿意,请随时在评论部分发布好心的解决方案 - 我保证我个人的好奇心会让我全部阅读 - 但请记住,这不是我的问题的主题。< / p>
答案 0 :(得分:1)
各种项目都很好地完成了热键,例如jquery.hotkeys。对于大多数热键,您可以在其演示页面上看到working example。它是 very small, only about 200 lines。
这是一个small example with the Alt+S hotkey,它适用于我(在不触发历史菜单的情况下)在Firefox 40.0.2中(当页面处于焦点时,而不是编码器编辑器)。
$(document).bind('keydown', 'Alt+s', function() {
$('body').append('Alt+s was pressed; ');
// alert('alert will cause the menu to activate, do not use');
return false;
});
答案 1 :(得分:1)
请注意,某些浏览器不允许您捕获某些快捷方式! Mozilla Firefox(版本:51.0.1,Linux )中 Alt + s 快捷方式的本机Javascript中的工作示例:
cell.deleteCellButton.tag = indexPath.item
cell.deleteCellButton.addTarget(self, action: #selector(deleteCellButtonTapped(sender:)), for: UIControlEvents.touchUpInside)