Comment puis-je désactiver Ctrl + A (tout sélectionner) en utilisant jQuery dans un navigateur?

J’essaie d’empêcher la copie d’informations à partir d’une page (pour les utilisateurs non techniques, bien sûr). Je sais comment désactiver la sélection de texte à l’aide de 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. Des solutions pour cela?

ce code fonctionne pour chaque combinaison de touche Ctrl + touche souhaitée 65 est le code ASCII de ‘A’

ajoutez 97 si vous voulez vérifier aussi ‘a’

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

Si ça marche, je l’ai écrit directement sans tester.

Fonctionne pour Windows (Ctrl + A) + MacOS (CMD + A) et utilisez preventDefault() place de return false :

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

Honnêtement, certains clients ne comprennent pas le fonctionnement d’Internet. Vous devez donc leur expliquer que tout ce qui est affiché à l’utilisateur peut facilement être sauvegardé, quel que soit ce que vous faites.

Au mieux, vous pouvez désactiver certaines choses, ce qui empêche les utilisateurs les plus simples de copier du texte.

Si vous ne le faites pas, quelqu’un trouvera un moyen de surmonter le trou que vous avez mis en place et vous répondra en vous disant “hé, je pensais vous avoir dit de verrouiller tout cela”

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 ça aide

La réponse acceptée ne fonctionne plus, car disableTextSelect() est obsolète depuis jQuery 1.9 et plus tard, elle a été supprimée et n’est plus prise en charge.

Vous devez utiliser objEvent.PreventDefault(); – cela fonctionne dans les nouveaux navigateurs jQuery et aussi:

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