Запрещаем копирование контента. Вариант от Николая Борисова (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-оптимизации тут был вторичен.

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

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

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

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.