Защита контента от копирования. Часть 3



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

В той статье мы повесили обработчики catchControlKeys и disableProtection на элементы с классами protect и no-protect соответственно.

Собственно, что в этих функциях

function disableProtection(event)
{
   e = event || window.event;
   e.stopPropagation();
   return true;
}

Здесь мы разрешаем все, что угодно, для нашего узла, то есть, отключаем защиту.

Эта строка e.stopPropagation(); нужна для того, чтобы, отключив защиту для данного узла, скрипт не пошел выше по дереву. Ничего плохого он там не сделает, то лишний обход DOM нам ни к чему.

 

Далее, в функции catchControlKeys() мы проверяем, какое событие произошло, а также, какая клавиша была нажата (при событии keypress). Если нажаты клавиши, которые мы хотим запретить, то возвращаем false, если события, которые мы хотим запретить, то тоже возвращаем false. В иных случаях, возвращаем true, то есть разрешаем действие.

Так же здесь приведена вспомогательная функция getKeyCode(), которая возвращает код нажатой клавиши. Почему-то в инете на многих ресурсах пишут, что event.which бессмысленно использовать, потому что все браузеры возвращают код клавиши по event.keyCode. Честно говоря, у меня в FireFox 29.0.1 event.keyCode всегда возвращает 0, а вот event.which правильное значение.

function catchControlKeys(evn)
{
   event = evn || window.event;
 
   var aRestrict = [117, 85, 99, 67, 97, 65];
   /*117, 85 ctrl+u 99, 67 ctrl+c 97, 65 ctrl+a*/
 
   if(aRestrict.indexOf(getKeyCode(event)) >= 0)
      return false;
 
   else if(event.type == 'dragstart' 
|| event.type == 'selectstart'
|| event.type == 'contextmenu'
|| event.type == 'copy') return false;   return true; }   function getKeyCode(e) { var iCode = e.keyCode;   if(!iCode) iCode = e.which;   return iCode; }

 

Итоговый скрипт смотрим в следующей статье Защита контента от копирования. Часть 4

Благодарность принимаю в виде:

  • "Спасибо" от чистого сердца
  • лайка / шары
  • комментария
  • Яндекс.Денег 4100162037745
  • WebMoney Z150917603458, R351335054010, E199046692457, U207019834816



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

Последние 0 комментариев(я)