Как я могу отключить 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, чтобы выделить всю страницу. Есть ли обходные пути для этого?

5 ответов

Решение

Этот код работает для любой комбинации клавиш Ctrl+, которую вы хотите. 65 - это код ASCII 'A'

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

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

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

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

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

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

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

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

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

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

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

Это легко с CSS:

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

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

Другие вопросы по тегам