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

回答

相關問題