Перейти до основного вмісту
Скрипт захисту тексту від копіювання

Часто у вебмайстрів та оптимізаторів постає питання: як захистити унікальний текстовий контент від копіювання? Говорити про те, чи варто його захищати взагалі в цій статті, ми не будемо, а розберемо лише деякі із способів захисту.

Варіантів захисту (заборони) текстів від копіювання насправді не багато, і найпопулярніший з них - це заборона копіювання за допомогою скрипта, що забороняє праву кнопку миші або набір клавіш Ctrl+C. До мінусів цього скрипту можна віднести те, що часто самі користувачі для тих чи інших цілей потребують копіювання частини тексту (не для копіпасту на своїх сайтах, а скажемо для нотаток, диплома, для письма тощо) і неможливість це зробити часом дуже дратує. Що ж до досвідченого вебмайстра або контент менеджера, то йому не складе особливих труднощів натиснути Ctrl+U, і з вихідного коду скопіювати потрібний йому текст.

Я не прихильник такого методу, але якщо він вас влаштовує - ось скрипт заборони правої кнопки миші:

<script type="text/javascript">

var message="Правая кнопка мыши отключена!";
function click(e) {
   if (document.all) {	// IE
      if (event.button == 2) {	// Чтобы отключить левую кнопку поставьте цифру 1
          alert(message);	// чтобы отключить среднюю кнопку поставьте цифру 1
          return false;}
      }
   if (document.layers) { // NC
      if (e.which == 3) {
          alert(message);
          return false;}
      }
}
if (document.layers)
   {document.captureEvents(Event.MOUSEDOWN);}
document.onmousedown=click;
document.oncontextmenu=function(e){return false};

</script>

Я пропоную використовувати альтернативний варіант, який не завдаватиме особливих незручностей звичайним користувачам, і може навіть принести користь для SEO.

Наведений нижче Javascript, на відміну від попереднього, не забороняє копіювати текст, а при копіюванні вставляє приховане посилання на першоджерело. Звичайно, найімовірніше досвідчений копіпастер помітить її в коді, але все ж таки частина таких посилань можуть залишитися на зовнішніх сайтах принісши на ваш сайт заповітні зворотні посилання.

От власне сам скрипт дозволяє вставляти приховане посилання на сайт першоджерело:

  <script type="text/javascript">
//<![CDATA[
function addLink() {
    var body_element = document.getElementsByTagName('body')[0];
    var selection = window.getSelection();

     var pagelink = "<p>Источник: <a href='"+document.location.href+"'>"+document.location.href+"</a></p>";

    var copytext = selection + pagelink;
    var newdiv = document.createElement('div');
    newdiv.style.position = 'absolute';
    newdiv.style.left = '-99999px';
    body_element.appendChild(newdiv);
    newdiv.innerHTML = copytext;
    selection.selectAllChildren(newdiv);
    window.setTimeout( function() {
        body_element.removeChild(newdiv);
    }, 0);
}
document.oncopy = addLink;
//]]>
</script>
  

Вставте цей Javascript у файл шаблону вашого сайту (кожний CMS має свій) перед закриваючим тегом </body>. За замовчуванням цей скрипт вставлятиме безанкорне посилання:

Джерело: http//адреса сайту/адреса сторінки, з якої копіюють текст

Раджу не змінювати цей вид, тому що безанкорне посилання виглядає природніше і ризики отримати фільтр від пошукових систем зводиться до мінімуму, але все ж таки якщо хочете поміняти - то "пиляйте" цю ділянку коду:

 var pagelink = "<p>Источник: <a href='"+document.location.href+"'>"+document.location.href+"</a></p>";

де другий "+document.location.href" між тегами <a></a> можете замінити на потрібний вам анкор.