Как отключить 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 для выбора всей страницы. Какие-нибудь обходные пути для этого?
Ответы
Ответ 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();
}
}
});
});