我有一些代碼可以爲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.stopImmediatePropagation
和evt.stopPropagation
。然而,它不起作用(我相信因爲我的處理程序正在瀏覽器處理程序之後被調用)。
可能是相關的:https://code.google.com/p/chromium/issues/detail?id=149751(被標記爲WontFix) – 2013-02-26 17:08:09
我已決定暫時放棄。 關鍵組合應該是什麼要求,所以我增加了對chrome用戶的ctrl + shift + pageup/pagedown的支持。 如果有人確實有答案,但我很樂意聽到它! – John 2013-02-27 19:06:13
給我們提供一個小提琴! – ricksuggs 2013-03-26 20:01:05