防止Chrome中的默认“ctrl pageup”和“ctrl pagedown”

时间:2013-02-26 17:00:23

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

我有一些代码可以为Web应用程序创建热键。所有热键都可以在IE和Firefox中使用,但 Ctrl + PgUp Ctrl + PgDn 不能正常工作铬。

在深入寻找答案并编写一些自定义测试代码后,我相信我已经确定这是因为这些事件在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。但是,它不起作用(我相信因为我的处理程序是在浏览器处理程序之后调用的)。

1 个答案:

答案 0 :(得分:0)

在此链接上查看类似问题:

Chrome - Javascript prevent default Ctrl + MouseWheel behavior

他们说铬不可能,而且还在解决它!

相关问题