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

В данной статье речь пойдет о событии JavaScript oncopy. Событие oncopy возникает перед тем, как выделенный текст скопируется в буфер обмена и управляет возможностью копировать его. Его можно применять как ко всему документу в целом, так и к отдельным элементам — DIV, SELECT, TEXTAREA, TABLE и др.
Событие oncopy поддерживается всеми основными браузерами — Internet Explorer, FireFox, Chrome, Opera, Safari.

Данное событие вызывается при:

  • Нажатии горячих клавиш Ctrl+C
  • Выборе пункта Копировать (Copy) из меню Правка (Edit)
  • Выборе пункта Копировать (Copy) из контекстного меню вызываемого нажатием правой клавиши мыши

Чтобы запретить копирование в определённом элементе, у него нужно прописать — oncopy="return false;" (например <div oncopy="return false;">).
Чтобы запретить копирование во всём документе, прописываем oncopy="return false;" у элемента BODY (<body oncopy="return false;">).

Пример:
Это самый обычный блок с текстом
В этом блоке нет защиты от копирования.
Скопируйте текст и вставьте его в поле ниже.
Вставьте сюда скопированный текст
Это блок с защитой от копирования
В этом блоке стоит защита от копирования
Попробуйте скопировать текст.
 

Надо заменить, что 100% защиту от копирования, сделать нельзя. Даже если стоит запрет на копирование oncopy или запрет на выделение текста, всегда можно обойти эту защиту просто отключив JavaScript в браузере или еще проще — открыть окно с исходным кодом HTML и скопировать защищенный текст оттуда. Данные методы могут остановить, разве что очень неопытного пользователя. А раз текст все равно можно скопировать, то пусть копируют, но мы будем добавлять в нему наши копирайты. Для этого напишем функцию, которая будет вызываться при наступлении события oncopy.

/*
	Функция для добавления текста к копируемому тексту
*/
function addCopyText(){
	var body=document.getElementsByTagName('body')[0];
	var selectText,newText;
	
	//текст который будет добавлен
	var addText='<br><br>Источник: '+document.location.href;

	//получаем выделенный текст, который хотят скопировать
	//для FireFox, Chrome, Opera, Safari
	if(window.getSelection){
		selectText=window.getSelection();
	}
	//для IE
	else{
		selectText=document.selection.createRange().text;
	}
	
	newText=selectText+addText;
	
	var newDiv=document.createElement('DIV');
	newDiv.innerHTML=newText;
	newDiv.style.position='absolute';
	newDiv.style.left='-99999px';
	body.appendChild(newDiv);
	
	//для FireFox, Chrome, Opera, Safari
	if(window.getSelection){
		selectText.selectAllChildren(newDiv);
	}
	//для IE
	else{
		var oRange=document.body.createTextRange();
		oRange.moveToElementText(newDiv);
		oRange.select();
	}
	
	window.setTimeout(function(){
		body.removeChild(newDiv);
	},0);
	
	return;
}
Пример:
В этом блоке при копировании к тексту добавляется дополнительный текст.
Скопируйте текст и вставьте его в поле ниже.
Вставьте сюда скопированный текст
Бoнус
Шуточный тестУлучшитель настроения
Реклама