Нет актуального решения, которое работает, чтобы остановить людей от копирования вещей, как говорили другие люди. Кроме того, если вы заставляете клавишу ALT перестать работать, люди с ограниченными возможностями больше не смогут использовать вашу страницу. Поэтому я бы сделал что-то совершенно другое: всякий раз, когда бы вы не захотели произойти, сделать невозможным чтение вашей страницы (если только человек, принимающий тест, не знает, как использовать инструменты разработчика в своем браузере).
Если мы предположим, что это ваш CSS стиль:
body {
user-select:none; /* try to prevent highlighting of text */
}
.readable { /* readable = contrasting colors */
color:black;
background-color:white;
}
.unreadable { /* unreadable = the same color */
color:white;
background-color:white;
}
.unreadable::selection { /* for highlighted text, if user-select fails */
background-color:white;
color:white;
}
Тогда вот основная читаемость изменяющих функции:
function canYouReadMe(yes) {
if(yes) { //we can read black on white
document.body.setAttribute('class','readable');
} else { //we can't read white on white
document.body.setAttribute('class','unreadable');
}
}
Вот JQuery для обработки управления, экрана печати и альта. Клавиша опускается вниз, вы не можете прочитать страницу. Ключ поднимается, вы можете прочитать его снова.
$(window).keydown(function(e){
if (e.ctrlKey //control key
|| e.keyCode == 44 //print screen
|| e.keyCode == 18 //alt key
) {
canYouReadMe(false);
if(e.ctrlKey) {
e.preventDefault(); //stop copy-paste but not alt
return false;
}
}
});
$(window).keyup(function(e){
if (e.ctrlKey //control key
|| e.keyCode == 44 //print screen
|| e.keyCode == 18 //alt key
) {
canYouReadMe(true);
if(e.ctrlKey) {
e.preventDefault();
return false;
}
}
});
И еще, что ручки правой кнопкой мыши (что номер 3):
$(window).mousedown(function(e) {
if (e.which == 3) {
canYouReadMe(false);
e.preventDefault(); //stop the menu from appearing
return false;
}
});
$(window).mouseup(function(e) {
if (e.which == 3) {
canYouReadMe(true);
e.preventDefault();
return false;
}
});
А вот то, что вам нужно для остановки других программ и не фокусировкой PrintScreen: ваша страница будет нечитаемым если он не находится в фокусе. Итак, если они перейдут в другое окно, они ничего не смогут увидеть. Это не позволяет им просто читать вашу страницу при вводе в другое окно.
$(window).focus(function() {
canYouReadMe(true); //read on focus
});
$(window).blur(function() {
canYouReadMe(false); //unreadable when focus is lost
});
Если окно фокус/размытия не удается, вы можете также посмотреть в использовании CSS, которые будут оказывать вещи только для чтения, когда в полноэкранном режиме. Я не уверен, что это выполнимо или нет.
Я не тестировал ни одно из этого - это просто моя теория, что он должен работать, с некоторыми изменениями здесь и там.
EDIT: Чтобы обратиться к людям, говорящим о источнике просмотра и т. Д .: Вы должны использовать ajax для визуализации вашего текста. Таким образом, если они отключат JavaScript, они ничего не заметят, и если они используют источник просмотра, они все равно ничего не заметят. Опять же, они могут обойти его с помощью инструментов разработчика (например, Inspect Element), но если они такие сообразительные, вы их не останавливаете.
Ни один из методов защиты не будет работать, поэтому просто перестаньте раздражать своих пользователей. – zerkms
абсолютно бессмысленный. есть «всегда» другая работа. Вы просто отбросите людей, потратите время и деньги, пытаясь остановить их, и, в конце концов, не получится. – Rottingham
Вы не можете. Поскольку JavaScript работает на стороне клиента, его можно манипулировать пользователем. Например, они могут просто отключить JavaScript в своем браузере. Или они могут запускать скрипты, которые отключают ваши попытки умерить свои программы и комбинации клавиш. – Daew