6

我有一些代码可以为Web应用程序创建热键。所有热键在IE和Firefox的工作,但按Ctrl +PgUp键按Ctrl + PgDn键无法在Chrome工作。防止在Chrome中使用默认'ctrl pageup'和'ctrl pagedown'

在挖掘答案并编写一些自定义测试代码后,我相信我已经确定这是因为这些事件在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,而不是浏览器。我试过evt.preventDefault()evt.stopImmediatePropagationevt.stopPropagation。然而,它不起作用(我相信因为我的处理程序正在浏览器处理程序之后被调用)。

+0

可能是相关的:https://code.google.com/p/chromium/issues/detail?id=149751(被标记为WontFix) – 2013-02-26 17:08:09

+0

我已决定暂时放弃。 关键组合应该是什么要求,所以我增加了对chrome用户的ctrl + shift + pageup/pagedown的支持。 如果有人确实有答案,但我很乐意听到它! – John 2013-02-27 19:06:13

+0

给我们提供一个小提琴! – ricksuggs 2013-03-26 20:01:05

回答

相关问题