Запрет на копирование текста сайта.
Добрый день, уважаемые, вот нашел скрипт который блокирует быстрые клавиши на запрет копирование текста сайта.
<!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, время: 00:56. |