Ho un po 'di codice per creare tasti di scelta rapida per un'applicazione web. Tutti i tasti di scelta rapida funzionano in IE e Firefox, tuttavia Ctrl +PgUp e Ctrl +PgDn non funzionano in Chrome.Impedisci l'impostazione predefinita 'ctrl pageup' e 'ctrl pagedown' in Chrome
Dopo aver cercato le risposte e aver scritto un codice di prova personalizzato, credo di aver determinato che ciò è dovuto al fatto che quegli eventi si attivano, in Chrome, su keyup anziché keydown.
I gestori di Chrome predefiniti per tali eventi vengono attivati anziché il mio (o almeno prima) e il passaggio al browser alla scheda successiva o precedente. Se uso il tasto di scelta rapida per tornare alla scheda con la mia applicazione, i miei gestori prendono l'evento.
Quindi la mia domanda è: esiste un modo per intercettare questi eventi in Chrome e impedire l'esecuzione della funzionalità predefinita?
Il codice in questione è:
//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;
});
fa esattamente quello che voglio in IE e Firefox, ma non Chrome. Ho provato evt.preventDefault()
, evt.stopImmediatePropagation
e evt.stopPropagation
. Tuttavia, non funziona (credo perché i miei gestori vengono chiamati dopo i gestori del browser).
Può essere correlato: https://code.google.com/p/chromium/issues/detail?id=149751 (è stato contrassegnato come WontFix) –
Ho deciso di rinunciare a questo per ora. I requisiti erano allentati su quale dovrebbe essere la combinazione di tasti, quindi ho aggiunto il supporto per ctrl + shift + pageup/pagedown per gli utenti di Chrome. Se qualcuno ha una risposta anche se mi piacerebbe sentirla! – John
Dateci un violino con cui lavorare! – ricksuggs