Статьи ⇒ html ⇒ Запрет правого клика мыши и выделения текста

Запрет правого клика мыши и выделения текста

Опубликовано: 8 ноя 2012 в 16:29
Автор: freeeeez  

Бывает, что необходимо исключить возможность выделения текста на странице и запретить пользователю копировать картинки с сайта. Это вопрос неоднократно поднимался в комментариях к статьям на сайте, однако на все мои уверения пользователей, что в этом нет необходимости, многие до сих пор хотят так сделать. В принципе запрет клика правой кнопкой мыши и запрет выделения текста являются нарушением юзабилити сайта. Да в конце концов, многие просто так щелкают правой кнопкой, а когда не видят привычного всплывающего меню их это вводит в ступор. 

Для чего это нужно?

Чтобы запретить копировать материалы сайта. Далее я докажу, что данная защита не представляет особой преграды для подготовленного пользователя и что ее применение не имеет смысла, однако сначала примеры. 

Запрет правого клика мыши

Видел в сети несколько вариантов запрета правого клика, но они все какие-то громоздкие и корявые, используют всплывающие сообщения о том, что копировать текст нельзя. Я оптимизировал эти решения и вот что получилось.

Первый метод использует javascript, но не работает в IE. 

<script language=JavaScript>
document.oncontextmenu=new Function("return false;")
</script>

Второй метод заключается в добавлении события oncontextmenu к тегу body:

<body oncontextmenu="return false">

Второй метод также работает не во всех браузерах, однако большинство его поддерживает. Для обеспечения кроссбраузерности рекомендую использовать их вместе. 

Запрет копирования текста

Для запрета копирования текста следует добавить к тегу body еще два свойства:

<body oncontextmenu="return false" oncopy="return false;" oncontextmenu="return false" onselectstart="return false;">

Событие oncopy запрещает копировать текст в буфер обмена операционной системы, а onselectstart запрещает выделять текст мышкой. 

Подведем итог

Мы с вами сделали защиту от "дурака". Любой более или менее подготовленный пользователь знает, что нажав Ctrl+U можно с легкостью скопировать нужный текст из исходного кода страницы. Однако, как показывает практика, от дураков и нужно защищаться!

Тэги:  • 
8 комментариев
29 746 просмотров


#1 Михаил Сташков, 3 апр 2013 в 13:39
Спасибо за быстрое решение :) Всё работает!
#2 Марат, 25 июн 2013 в 00:11
Скрипт который запрещает нажатие таких клавиатурных сочетаний, как: Ctrl+A, Ctrl+C, Ctrl+U и правой кнопки мыши.
на страницах перед /head :

document.ondragstart = test;
document.onselectstart = test;
document.oncontextmenu = test;
function test() {
return false;
}
document.oncontextmenu;
function catchControlKeys(event){
var code=event.keyCode ? event.keyCode : event.which ? event.which : null;
if (event.ctrlKey){
// Ctrl+U
if (code == 117) return false;
if (code == 85) return false;
// Ctrl+C
if (code == 99) return false;
if (code == 67) return false;
// Ctrl+A
if (code == 97) return false;
if (code == 65) return false;
}
}

Но это не всё, чтобы скрипт запрета нажатия сочетаний клавиш, нужно в body дописать параметр.
Просто замените на страницах @body@ на @body onkeypress=”return catchControlKeys(event)”@
Результат можете оценить тут : http://fbrka.ru
#3 freeeeez, 25 июн 2013 в 08:53
Зашел на ваш сайт. В принципе все аналогично вышесказанному, только упор в данной статье делался именно на простой и короткий код в две строчки. Кстати, Ctrl+U на вашем сайте работает:)
#4 Людмила, 10 сен 2013 в 14:07
Спасибо, огромное за информацию. Код на запрет копирования с сайта работает, это именно то что нужно!
#5 BOMBERuss, 19 дек 2015 в 22:47
Так можно в скопированное вставлять копирайт и ссылку:

function slyLink() {
var istS = 'Источник информации:';
var copyR = '© Автор';
var body_element = document.getElementsByTagName('body')[0];
var choose;
choose = window.getSelection();
var myLink = document.location.href;
var authorLink = "" + istS + ' ' + ""+myLink+"" + copyR;
var copytext = choose + authorLink;
var addDiv = document.createElement('div');
addDiv.style.position='absolute';
addDiv.style.left='-99999px';
body_element.appendChild(addDiv);
addDiv.innerHTML = copytext;
choose.selectAllChildren(addDiv);
window.setTimeout(function() {
body_element.removeChild(addDiv);
},0);
}
document.oncopy = slyLink;
#6 Максим Max, 18 апр 2017 в 17:37
Запрет на правуб кнопку мешает только Вашим посетителям, злоумышленики найдут 1000 способов скопировать. Могу на спор скопировать что угодно. Нет защиты, это просто борьба со своими посетителями и все.
Видео на тему:
https://youtu.be/NYemdnasxzg
#7 Marat, 20 май 2017 в 22:08
Поддерживаю Максим Max. Лучше бы уж тогда скрипт, который при копировании в различные указанные места вставлял текст типа: "... как пишет vsirius.ru ...". Надеюсь вы меня понимаете.

https://vsirius.ru — форум для тех, кто ищет платное, бесплатно или гораздо дешевле.
#8 Дмитрий, 19 янв 2018 в 08:11
Спасибо, использовал один из методов. Все работает.

Оставить комментарий:

Имя:
Email:
Сайт:
Комментарий:

Допустимые теги: <em> • <strong> • <u> • <sub> • <sup> • <blockquote>

Проверочный код:

Введите проверочный код, для подтверждения, что вы не робот.
P.S. Если вы робот, то, к сожалению, вы
не сможете прочитать символы с картинки.