2009-10-30 3 views
0

Je suis en train d'utiliser jQuery pour intercepter des frappes de touches Ctrl-A sur ma page web, comme ceci:Puis-je intercepter le contrôle-A une pression sur IE?

$(document).keypress(function (event) { 
    if (event.ctrlKey && (event.which == 65 || event.which == 97)) { 
     event.preventDefault(); 
     // ... 
    } 
}); 

Cela fonctionne sur Firefox, mais sur IE7, mon gestionnaire d'événements ne nous appelle pas, et tout du texte sur la page est sélectionné à la place (comme cela se produit sur Firefox sans le gestionnaire d'événements).

Est-il possible d'intercepter le contrôle-A sur IE?

+0

Je pense que le problème est votre nom de paramètre. Il suffit de l'appeler «e» au lieu de l'événement prédéfini –

Répondre

6

Cela fonctionne sous FF 3.5 et IE7 pour moi:

$(function() { 
     var isCtrl = false; 

     $(document).keyup(function (e) { 
      if(e.keyCode == 17) 
       isCtrl = false; 
     }).keydown(function (e) { 
      if(e.keyCode == 17) 
       isCtrl = true; 

      if(e.keyCode == 65 && isCtrl == true) { 
       alert('Intercepted CTRL+A'); 
       e.preventDefault(); 
      } 
     }); 
    }); 
+0

Super, merci! Il fonctionne même dans IE6. – Sean

+0

Démo: http://jsfiddle.net/zDGPG/ –

+0

Tombé sur cette tentative de faire la même chose avec Ctrl + A. Cette astuce ne semble plus fonctionner dans Edge ou IE11 sous Windows 10. Cela me rend triste que la seule chose à faire sur Linux est que lorsque vous essayez de tester en M $, vous trouvez 8 choses qui fonctionnent sur tous les navigateurs et toutes les plates-formes sauf IE/Edge. – drew010

0

Si vous faites une fausse déclaration dans le gestionnaire d'événements, alors il annulera le comportement des navigateurs. Selon le navigateur, il peut se comporter différemment (par exemple, une pression sur firefox se déclenchera toujours sur firefox après l'annulation d'un keydown, tandis que IE l'arrêtera).

Questions connexes