【问题标题】:Prevent default 'ctrl pageup' and 'ctrl pagedown' in Chrome在 Chrome 中阻止默认的“ctrl pageup”和“ctrl pagedown”
【发布时间】:2013-02-12 05:55:00
【问题描述】:

我有一些代码可以为 Web 应用程序创建热键。所有的热键都可以在 IE 和 Firefox 中使用,但是 Ctrl+PgUpCtrl+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。但是,它不起作用(我相信是因为我的处理程序是在浏览器处理程序之后被调用的)。

【问题讨论】:

  • 可能相关:code.google.com/p/chromium/issues/detail?id=149751(被标记为 WontFix)
  • 我决定暂时放弃这个。对组合键的要求很宽松,因此我为 chrome 用户添加了对 ctrl+shift+pageup/pagedown 的支持。如果有人有答案,尽管我很想听!
  • 给我们一个小提琴!

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


【解决方案1】:

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

Chrome - Javascript prevent default Ctrl + MouseWheel behavior

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多