Подтвердить что ты не робот

Как отключить Ctrl + A (выбрать все) с помощью jquery в браузере?

Я пытаюсь предотвратить копирование информации со страницы (конечно, для нетехнических пользователей). Я знаю, как отключить выбор текста с помощью мыши. Следующий код jquery работает:

$(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();
});

Но пользователи могут использовать Ctrl + A для выбора всей страницы. Какие-нибудь обходные пути для этого?

4b9b3361

Ответ 1

этот код работает для каждой комбинации клавиш Ctrl +, которые вы хотите 65 - это код ascii 'A'

добавьте 97, если вы хотите также проверить 'a'

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

Должен работать, я написал его напрямую без тестирования.

Ответ 2

Работает для Windows (Ctrl + A) + MacOS (CMD + A) и использует preventDefault() вместо return false:

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

Ответ 3

Некоторые клиенты честно не понимают, как работает Интернет, поэтому вы должны внести свой вклад в объяснение им того, что все, что отображается пользователю, может быть легко сохранено независимо от того, что вы делаете.

В лучшем случае вы можете отключить некоторые вещи, затрудняя простейшим пользователям копирование текста.

Если вы этого не сделаете, кто-то поймет, как пройти через любой промежуток времени, который вы положили на место, и они вернутся к вам, сказав: "Эй, я думал, что сказал, чтобы вы заблокировали это"

Ответ 4

Это легко с помощью css:

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

Я надеюсь, что это поможет

Ответ 5

Принятый ответ больше не работает, потому что disableTextSelect() был устаревшим с jQuery 1.9, а затем был удален и теперь не поддерживается.

Вы должны использовать objEvent.PreventDefault(); - это работает в новейших jQuery, а также в новейших браузерах:

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