Запрещаем копирование контента. Вариант от Николая Борисова (VAMshop)

26.02.2011 | Написал

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

Итак, скрипт от Николая Борисова. Вставляем в начале корневых файлов шаблона, в частности, в templates/наш шаблон/index.html следующий код:

{literal}<script>
document.oncontextmenu = cmenu; function cmenu() { return false; }
function test(form){
    alert(form.value);
}
</script><script>
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();
  }
  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 == 'A'.charCodeAt(0))
    {
      removeSelection();
 
      if (event.preventDefault) 
        event.preventDefault();
      else
        event.returnValue = false;
    }
  }
 
  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);
  });
 
  addHandler(element, 'mouseup', function(){
    if (preventSelection)
      removeSelection();
    preventSelection = false;
  });
 
  addHandler(element, 'keydown', killCtrlA);
  addHandler(element, 'keyup', killCtrlA);
}
preventSelection(document);
</script>{/literal}

Скрипт отключает правую кнопку мыши и выделение по Ctrl+A.

Метки: ,
3 комментария читателей статьи "Запрещаем копирование контента. Вариант от Николая Борисова (VAMshop)"
  • Дмитрий пишет:

    Здравствуйте!
    Очень интересный материал, однако существует мнение, что:
    Защищённое содержимое (неважно, каким путем) недоступно поисковым роботам, что крайне негативно отражается на посещаемости.
    Где то прочёл, не помню точно где, но врезалось в память.
    Вы могли бы опровергнуть, или подтвердить эту теорию.
    И Ваш скрипт поисковым машинам не мешает?

  • Евгений Молодецкий пишет:

    Честно говоря, ничего не могу сказать по этому поводу. У меня стояла задача запрета копирования, я её решил. Вопрос SEO-оптимизации тут был вторичен.

  • Алексей пишет:

    Ничего подобного не произойдет. ПС не читают скрипты, а значит воспримут страницу как если бы скрипт не стоял

Добавить комментарий

Ваш e-mail не будет опубликован.