20 votes

Comment désactiver Ctrl+A (sélectionner tout) en utilisant jquery dans un navigateur ?

J'essaie d'empêcher que des informations soient copiées à partir d'une page (pour les utilisateurs non techniques bien sûr). Je sais comment désactiver la sélection de texte en utilisant la souris. Le code jquery suivant fonctionne :

$(function(){
  $.extend($.fn.disableTextSelect = function() {
    return this.each(function(){
      if($.browser.mozilla){//Firefox
        $(this).css('MozUserSelect','none');
      }else if($.browser.msie){//IE
        $(this).bind('selectstart',function(){return false;});
      }else{//Opera, etc.
        $(this).mousedown(function(){return false;});
      });
    });
    $('.noSelect').disableTextSelect();
});

Mais les utilisateurs peuvent toujours utiliser Ctrl+A pour sélectionner la page entière. Existe-t-il des solutions de contournement ?

15voto

Marcx Points 3340

Ce code fonctionne pour toutes les combinaisons de ctrl+touche que vous voulez 65 est le code ascii de 'A'.

ajoutez 97 si vous voulez vérifier également pour 'a'.

$(function(){   
    $(document).keydown(function(objEvent) {        
        if (objEvent.ctrlKey) {          
            if (objEvent.keyCode == 65) {                         
                objEvent.disableTextSelect();
                return false;
            }            
        }        
    });
});    

Cela devrait fonctionner, je l'ai écrit directement sans le tester

7voto

ben Points 456

Fonctionne pour Windows (Ctrl+A) + MacOS (CMD+A) et utilise preventDefault() au lieu de return false :

$(function(){   
  $(document).keydown(function(e) {    
    if ((e.ctrlKey || e.metaKey) && e.keyCode == 65) {
      e.preventDefault();
    }
  });
});

1voto

Allen Rice Points 8899

Certains clients ne comprennent vraiment pas comment fonctionne l'internet. Vous devez donc faire votre part pour leur expliquer que tout ce qui est affiché à l'utilisateur peut facilement être sauvegardé, quoi que vous fassiez.

Au mieux, vous pouvez désactiver certains éléments, ce qui rend la copie de texte difficile pour le plus simple des utilisateurs.

Si vous ne le faites pas, quelqu'un trouvera un moyen de contourner le dispositif que vous avez mis en place et reviendra vers vous en disant : "Hé, je croyais vous avoir dit de verrouiller tout ça".

1voto

Legionar Points 5710

La réponse acceptée est de ne plus travailler, car disableTextSelect() était déprécié depuis jQuery 1.9, et plus tard il a été supprimé et maintenant non supporté.

Vous devez utiliser objEvent.PreventDefault(); - cela fonctionne avec la dernière version de jQuery et les navigateurs les plus récents :

$(function() {
    $(document).keydown(function(objEvent) {
        if (objEvent.ctrlKey) {
            if (objEvent.keyCode == 65) {
                objEvent.preventDefault();
            }
        }
    });
});

0voto

Ámon Tamás Points 121

C'est facile avec css :

body {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -user-select: none;
}

J'espère que cela aidera

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X