javascript - 阻止 Chrome 中的默认 'ctrl pageup' 和 'ctrl pagedown'

标签 javascript jquery event-handling cross-browser keyboard-shortcuts

我有一些代码可以为网络应用程序创建热键。所有热键在 IE 和 Firefox 中都可以使用,但是 Ctrl+PgUpCtrl+PgDn 在 IE 和 Firefox 中不起作用 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;
            });

它完全符合我在 IE 和 Firefox 中的要求,但不是 Chrome。我已经尝试过 evt.preventDefault()evt.stopImmediatePropagationevt.stopPropagation。但是,它不起作用(我相信是因为我的处理程序在浏览器处理程序之后被调用)。

最佳答案

检查此链接上的类似问题:

Chrome - Javascript prevent default Ctrl + MouseWheel behavior

他们说这在 chrome 上是不可能的,而且还在解决中!

关于javascript - 阻止 Chrome 中的默认 'ctrl pageup' 和 'ctrl pagedown',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15094920/

相关文章:

javascript - 对齐 float Div 底部的按钮 - BootStrap Responsive

javascript - 每天凌晨 2 点执行 Cron 作业

javascript - 电话导航无法正常工作

jQuery 淡出和淡入问题

jquery - 如何从一系列数据属性的元素更改 css?

javascript - 使用 .getJSON 的 JSONP 返回未定义

php - Symfony2 从表单类型模板附加 javascript 文件

c# - 如何知道 UserControl 何时完成触发事件?

javascript - 为什么要在构造函数中定义事件处理程序成员函数(内联)以便与 'unbind' 一起使用?

c# - 当父控件包含嵌套按钮时如何阻止父控件接收触摸事件