Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Защита от копирования содержимого страницы
Защита от копирования текста страницы
Защитить от выделения и копирования текста страницы можно с помощью следующего кода:
<script type="text/javascript">
document.ondragstart = test;
//запрет на перетаскивание
document.onselectstart = test;
//запрет на выделение элементов страницы
document.oncontextmenu = test;
//запрет на выведение контекстного меню
function test() {
return false
}
</script>
Такая защита НЕ спасет от:
- выделения всей страницы с помощью комбинации клавиш Ctrl + A,
- просмотра исходного текста с помощью комбинации клавиш Ctrl + U,
- сохранения всей страницы на диск с помощью комбинации клавиш Ctrl + S.
Дочитайте до конца и узнаете, почему на данной странице ни одна из этих комбинаций не работает.
Защита от копирования отдельных элементов страницы
Если необходимо защитить исключительно картинки, то можно обойтись следующим кодом:
<img src="image.jpg" oncontextmenu="return false;" ondragstart="return false">
Если нужно защитить от выделения отдельный блок, то воспользуйтесь таким кодом:
<div id="noselect">
Этот блок нельзя выделить
</div>
<script type="text/javascript">
function disableSelection(target){
if (typeof target.onselectstart!="undefined")
target.onselectstart=function(){return false}
else if (typeof target.style.MozUserSelect!="undefined")
target.style.MozUserSelect="none"
else
target.onmousedown=function(){return false}
target.style.cursor = "default"
}
if (document.getElementById("noselect")) disableSelection(document.getElementById("noselect"));
</script>
Защита от копирования всей страницы
Текст и картинка на данной странице защищены от выделения и копирования. Проверьте!
Конечно, не секрет, что и такую защиту можно обойти через просмотр исходного кода защищенной страницы средствами браузера.
Исходный код этого примера:
<script>
// запрет правой кнопки мышки
document.onmousedown = function (e) {
e = e || window.event;
var b = (e.which ? (e.which < 2) : (e.button < 2));
if (!b)return false;
};
document.oncontextmenu = function (e) {
return false
};
// запрет выделения мышкой и комбинаций клавиш Ctrl + A, Ctrl + U и Ctrl + S
function preventSelection(e) {
var preventSelection = false;
function addHandler(e, event, handler) {
if (e.attachEvent) e.attachEvent('on' + event, handler);
else if (e.addEventListener) e.addEventListener(event, handler, false);
}
function removeSelection() {
if (window.getSelection) {
window.getSelection().removeAllRanges();
}
else if (document.selection && document.selection.clear)
document.selection.clear();
}
// запрещаем выделять текст мышкой
addHandler(e, 'mousemove', function () {
if (preventSelection) removeSelection();
});
addHandler(e, 'mousedown', function (e) {
e = e || window.event;
var sender = e.target || e.srcElement;
preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
});
// запрещаем нажатие клавищ Ctrl + A, Ctrl + U и Ctrl + S
function killCtrlA(e) {
e = e || window.e;
var sender = e.target || e.srcElement;
if (sender.tagName.match(/INPUT|TEXTAREA/i)) return;
var key = e.keyCode || e.which;
if ((e.ctrlKey && key == 'U'.charCodeAt(0)) || (e.ctrlKey && key == 'A'.charCodeAt(0)) || (e.ctrlKey && key == 'S'.charCodeAt(0))) // 'A'.charCodeAt(0) можно заменить на 65
{
removeSelection();
if (e.preventDefault) e.preventDefault();
else e.returnValue = false;
}
}
addHandler(e, 'keydown', killCtrlA);
addHandler(e, 'keyup', killCtrlA);
}
preventSelection(document);
</script>
Таким образом, вы запретите выделение во всем документе, кроме элементов INPUT и TEXTAREA.
Комментарии
Выделении текста двойным кликом:
- Google Chrome и FireFox выделяют слово, и можно успеть нажать Ctrl+C.
- Opera и Microsoft Edge не дают запретить поведение по умолчанию. Они выделяет слово и вызывают контекстное меню.
Само собой, решение не идеальное и требует JavaScript (с другой стороны, подобная защита нужна в веб-приложениях, которые и так используют JS). И это лучше, чем ничего, и довольно кроссбраузерно (конечно, может потребоваться дополнительный код для некоторых браузеров и их версий).
Смотрите также:
Как запретить пользователю выделять текст в браузере
.
Прокомментировать/Отблагодарить