2009-09-15 8 views
4

J'essaie de désactiver les raccourcis du navigateur pendant que l'utilisateur essaie d'appuyer sur une combinaison de touches du fichier swf. Bien que je puisse réaliser ceci dans firefox, le code ci-dessous ne fonctionne pas dans ie 8. Ci-dessous le code est capable d'accrocher les événements de clavier si le foyer n'est pas sur le dossier de swf. Cependant, ce dont j'ai besoin est d'accrocher des événements de clavier lorsque l'utilisateur fonctionne sur un fichier swf.Comment hooker un événement de clavier IE?

function hookKeyboardEvents(e) { 

    alert("hooked key"); 
    // 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 && !event.altKey) { 
      window.event.returnValue = null; 
      event.keyCode=0; 
     }  
    } 
    // case: if it is firefox event 
    else 
     e.preventDefault(); 

    document[flashId].keyDown(key_code); 
} 

window.document.onkeydown = hookKeyboardEvents; 

Le code ci-dessus ne s'exécute jamais lorsque le focus est sur un fichier swf.

+0

Juste une correction à votre code. Les propriétés shiftKey, ctrlKey et altKey sont disponibles pour les navigateurs IE et W3C. Vous n'avez pas besoin de tester window.event (une convention IE). –

+0

Donc, vous voulez dire juste e.preventDefault() va annuler l'événement – Oki

+0

Je pense que preventDefault fonctionnera avec les navigateurs Mozilla, mais pas IE. Il vaut mieux utiliser des instructions conditionnelles basées non sur le navigateur que vous voyez, mais sur l'existence de la propriété. Essayez si (e.preventDefault) {e.preventDefault(); } au lieu de if (! window.event) {e.preventDefault(); } –

Répondre

1
document.body.accessKey = String.fromCharCode(e.keyCode); 
Questions connexes