Joh*_*ohn 7 javascript jquery keyboard-shortcuts cross-browser event-handling
我有一些代码来为Web应用程序创建热键.所有热键都可以在IE和Firefox中使用,但Ctrl+ PgUp和Ctrl+ PgDn在Chrome中不起作用.
在深入寻找答案并编写一些自定义测试代码之后,我相信我已经确定这是因为这些事件在Chrome中以keyup而不是keydown触发.
这些事件的默认Chrome处理程序是触发而不是我的(或至少是第一个),并将浏览器切换到下一个或上一个选项卡.如果我使用热键切换回我的应用程序的选项卡,那么我的处理程序将捕获该事件.
所以我的问题是,有没有办法在Chrome中捕获这些事件并阻止默认功能运行?
有问题的代码是:
//These work in IE and Firefox
$(this).bind('keydown', 'ctrl+pageup', (evt) => {
this.prevPage();
return false;
});
$(this).bind('keydown', 'ctrl+pagedown', (evt) => {
this.nextPage();
return false;
});
//These catch the event in chrome, but it's too late
$(this).bind('keyup', 'ctrl+pageup', (evt) => {
this.prevPage();
return false;
});
$(this).bind('keyup', 'ctrl+pagedown', (evt) => {
this.nextPage();
return false;
});
Run Code Online (Sandbox Code Playgroud)
它完全符合我想要的IE和Firefox,但不是Chrome.我试过了evt.preventDefault(),evt.stopImmediatePropagation而且evt.stopPropagation.但是,它不起作用(我相信因为我的处理程序是在浏览器处理程序之后调用的).
| 归档时间: |
|
| 查看次数: |
1987 次 |
| 最近记录: |