Как я могу отключить 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;
}
Я надеюсь, что это помогает