2009-07-15 16 views
6

EDIT: Dopo aspettato un po 'e non ha ottenuto ancora nulla, ho deciso di fare thingy scorciatoia disabilitare solo per IE ora. C'è la possibilità di disabilitare i tasti di scelta rapida IE per accedere ai menu/stampare tramite vbscript?tasti di scelta rapida di Internet Explorer Disabilita

È possibile disattivare i tasti di scelta rapida del browser?

Perché molti di essi vengono utilizzati nell'applicazione. Ad esempio, Ctrl + p si sta utilizzando e non voglio che il browser apra la finestra di stampa.

+0

Sei riuscito a farlo funzionare? Sto avendo lo stesso problema e non ho ancora trovato una soluzione. –

+0

@DianaAmza, non sono riuscito a trovare una soluzione per questo. IE non ti consentirà di ignorare il comportamento predefinito. –

+0

Ok, grazie! –

risposta

4

Sì, è possibile ascoltare le varie combinazioni di tasti con javascript e disabilitare i comportamenti predefiniti. C'è anche una libreria che puoi usare e testare here. L'ho appena provato usando google chrome e firefox nella loro demo textarea, e funziona come vuoi tu.

shortcut.add("Ctrl+P",function() { 
    return; 
}); 

Questo funziona nei browser che ho elencato sopra, ma IE non consente di ignorare il comportamento predefinito in alcuni casi.

L'unica opzione in IE è quella di disabilitare del tutto il tasto Ctrl con qualcosa di simile:

document.onkeydown = function() { 
    if (event.keyCode == 17) alert('Ctrl Key is disabled'); 
}; 

Il che non è l'ideale e probabilmente non quello che volete, ma funzionerà.

+0

Ottenere la finestra di stampa su Ctrl + P :( –

+0

Mi sono stancato usando il pannello "Esecuzione dal vivo" qui sotto. Cambio la chiave da "Ctrl + Shift + X" a "Ctrl + P" e mostra la finestra di stampa Significa che il browser sta ancora ascoltando le chiavi Sto usando firefox 3. –

+1

Ci sono alcune azioni che non puoi disabilitare – Boldewyn

3

È possibile provare a creare un gestore eventi per l'evento keydown, controllare il codice chiave e impedire l'azione predefinita, se necessario. Tuttavia, questo non funzionerà su tutti i browser.

Un esempio per Firefox (l'annullamento "Stampa" chiave corta, verificato):

document.addEventListener("keydown", function(oEvent) { 
    if (oEvent.keyCode == 80 && oEvent.ctrlKey) 
     oEvent.preventDefault(); 
}, false) 
+0

Grazie Sergey. Qualche idea di qualcosa di simile per IE. –

+0

No, immagino che non ci sia modo di prevenire il collegamento in IE. Ma ha davvero senso provare? L'utente può ancora stampare o incollare il testo accedendo al menu. –

+0

Devo disabilitare alcune chiavi e renderle in uso per qualche altro scopo. In realtà, era un requisito in quanto il sistema era stato scritto per la prima volta sul desktop e ora si sta spostando sul web. E in questa prima fase di trasformazione vogliono che gli utenti abbiano la stessa esperienza. L'uso di alcune chiavi frequentemente per qualche scopo e il ctrl + p è un uso. –

1

Sto lavorando su problema simile, hooking keyboard event Sotto il codice funziona bene per disabilitare, ad eccezione l'oggetto flash della IE non ha ha il focus. Poiché sto cercando di gestire l'evento della tastiera sull'oggetto Flash, questo codice non funziona per me.

function hookKeyboardEvents(e) { 
    // get key code 
    var key_code = (window.event) ? event.keyCode : e.which; 

    // case :if it is IE event 
    if (window.event) 
    { 
     if (!event.shiftKey && !event.ctrlKey) { 
      window.event.returnValue = null; 
      event.keyCode = 0; 
     } 
    } 
    // case: if it is firefox event 
    else 
     e.preventDefault(); 
} 

window.document.onkeydown = hookKeyboardEvents; 
+0

Questo codice previene tutti i colpi di chiave e funziona solo per firefox – Oki

+0

Qualche fortuna su qualcosa che potrebbe funzionare anche per IE? –

+0

stai passando "e", non "evento". quindi cambia tutti i riferimenti a "window.event" o usa "e". Dovrebbero essere uguali. –

1

Da voi l'applicazione dopo aver chiamato il metodo su Ctrl + P basta fare il codice chiave come zero.I pensare che risolverà il tuo problema ...

window.event.keyCode = 0;

questo imposta il codice, come zero..So occasione di un controllo Explorer per keyCode sarà pari a zero ... così la funzione di default non verrà eseguito ...

Provare questo ... solo un suggerimento

+0

Non ha funzionato per IE11 –

0

Questo funziona per me in IE 8. La parte importante è IE richiede che ev.returnValue sia impostato su false. NOTA: questo funziona solo se hai messo a fuoco alcuni elementi del documento ... cioè, se carichi la pagina e premi 'ctrl-p' vedrai la finestra di dialogo di stampa. Ma se fai clic da qualche parte sulla pagina, quindi prova, dovrebbe sopprimere la finestra di dialogo di stampa.

document.onkeydown = function (e) { 

    var ev = e||window.event; 

    // Do what I want keys to do ... 

    // Block browser short cuts 
    if(ev.preventDefault) // non-IE browsers 
     ev.preventDefault(); 
    else // IE Only 
     ev.returnValue = false; 
}; 
+1

hai effettivamente testato questo? Perché non sembra funzionare in IE9 – Paul

+0

Sì, ho avuto questo in produzione per molti anni e funziona bene. Tuttavia, potrebbe essere mi sono dimenticato di passare il parametro "e" sopra. L'ho appena modificato. Ho anche aggiunto una nota sul fatto che questa soluzione funziona solo quando il tuo documento ha il focus. Se non ci si concentra sulla pagina, verrà visualizzata la finestra di dialogo di stampa. Non pensare che ci sia un modo per aggirare questo. – cakidnyc

2

C'è un bel trucco per combattere con IE10 +, al fine di evitare i menu del browser di visualizzazione su Alt combinazioni di tasti, come Alt + F, Alt + H ...

Recentemente ho usato su IE11, basta aggiungere un ancoraggio con la attribuire accesskey: [yourKey] sul tuo corpo

<body> 
    <a href="#" accesskey="f"></a> 
    <script type="text/javascript"> 
    window.onkeydown = function(e){ 
      console.log(e.keyCode + " alt: " + e.altKey); 
      e.preventDefault(); 
    }; 
    window.onkeyup = function(e){ 
      console.log(e.keyCode + " alt: " + e.altKey); 
      e.preventDefault(); 
    }; 
    </script> 
</body> 

Ora, quando si preme Alt + f il browser non visualizzerà "pop-up File", come al solito, e vi permetterà di eventi KeyDown e keyup ottenere s a te, e non solo keydown.

+0

Solo soluzione che ha funzionato per IE11. –

Problemi correlati