Запрет на копирование текста сайта.
Добрый день, уважаемые, вот нашел скрипт который блокирует быстрые клавиши на запрет копирование текста сайта.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Closed Site</title>
<script>
"use strict";
function preventSelection(element) {
//запрещает выделение мышкой и комбинации клавиш Ctrl + A и Ctrl + U и Ctrl + S
function preventSelection(element) {
var preventSelection = false;
var event = event || window.event;
var sender = event.target || event.srcElement;
function addHandler(element, event, handler) {
if (element.attachEvent) element.attachEvent('on' + event, handler);
else if (element.addEventListener) element.addEventListener(event, handler, false);
}
function removeSelection() {
if (window.getSelection) {
window.getSelection().removeAllRanges();
} else if (document.selection && document.selection.clear)
document.selection.clear();
}
//запрещаем выделять текст мышкой
addHandler(element, 'mousemove', function () {
if (preventSelection) removeSelection();
});
addHandler(element, 'mousedown', function (event) {
preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
});
//запрещаем нажатие клавищ Ctrl + A и Ctrl + U и Ctrl + S
function killCtrlA(event) {
if (sender.tagName.match(/INPUT|TEXTAREA/i)) return;
var key = event.keyCode || event.which;
if ((event.ctrlKey && key == 'U'.charCodeAt(0)) || (event.ctrlKey && key == 'A'.charCodeAt(0)) || (event.ctrlKey && key == 'S'.charCodeAt(0))) // 'A'.charCodeAt(0) можно заменить на 65
{
removeSelection();
if (event.preventDefault) event.preventDefault();
else event.returnValue = false;
}
}
addHandler(element, 'keydown', killCtrlA);
addHandler(element, 'keyup', killCtrlA);
}
preventSelection(document);
}
preventSelection(document);
</script>
</head>
<body>
<h1>If you see this sentence, that mean something go wrong !</h1>
</body>
</html>
Подскажите, пожалуйста, почему в консоль сыпятся ошибки на строке var sender = event.target || event.srcElement; ? Как это можно исправить ? (Я нашел что event.srcElement используется для старых версий FF) но почему-то "use strict" не решил моей проблемы. |
Black_Star,
код устарел и мало полезен.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Closed Site</title>
<script>
"use strict";
//запрещает выделение мышкой и комбинации клавиш Ctrl + A и Ctrl + U и Ctrl + S
function preventSelection(element) {
var preventSelection = false;
function addHandler(element, event, handler) {
if (element.attachEvent) element.attachEvent('on' + event, handler);
else if (element.addEventListener) element.addEventListener(event, handler, false);
}
function removeSelection() {
if (window.getSelection) {
window.getSelection().removeAllRanges();
} else if (document.selection && document.selection.clear)
document.selection.clear();
}
//запрещаем выделять текст мышкой
addHandler(element, 'mousemove', function () {
if (preventSelection) removeSelection();
});
addHandler(element, 'mousedown', function (event) {
var event = event || window.event;
var sender = event.target || event.srcElement;
preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
});
//запрещаем нажатие клавищ Ctrl + A и Ctrl + U и Ctrl + S
function killCtrlA(event) {
var event = event || window.event;
var sender = event.target || event.srcElement;
if (sender.tagName.match(/INPUT|TEXTAREA/i)) return;
var key = event.keyCode || event.which;
if ((event.ctrlKey && key == 'U'.charCodeAt(0)) || (event.ctrlKey && key == 'A'.charCodeAt(0)) || (event.ctrlKey && key == 'S'.charCodeAt(0))) // 'A'.charCodeAt(0) можно заменить на 65
{
removeSelection();
if (event.preventDefault) event.preventDefault();
else event.returnValue = false;
}
}
addHandler(element, 'keydown', killCtrlA);
addHandler(element, 'keyup', killCtrlA);
}
preventSelection(document);
</script>
</head>
<body>
<h1>If you see this sentence, that mean something go wrong !</h1>
</body>
</html>
|
Цитата:
СSS-свойство user-select позволяет контролировать, когда пользователь может выделять текст...
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Closed Site</title>
<style>
body {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
}
</style>
</head>
<body>
<h1>If you see this sentence, that mean something go wrong !</h1>
</body>
</html>
Black_Star, рони, а если текст нельзя выделять, то должен ли курсор быть в виде символа, указывающего, что возможно текстовое выделение, а именно то, что для текста действуют выделения и контекстные меню, характерные для полей текстового ввода? |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
И ещё раз прочитайте это... Цитата:
Цитата:
Цитата:
UPD Возможно вы перепутали запрет на выделение с защитой от кражи данных! Почему ваш запрет на выделение мышкой (почему это так смешно звучит в 2019?) нельзя считать защитой от кражи данных? Рассмотрите другие варианты...
Достойной защитой от кражи данных является авторизованный доступ к данным! |
Цитата:
СSS от дурака оптимальное решение. |
| Часовой пояс GMT +3, время: 22:42. |