[jQuery] Jak zablokować prawy przycisk myszy, CTRL+C i CTRL+V?

Data dodania wpisu: 29-12-2010

Ten skrypt nie zabezpieczy strony i zawartości przed kopiowaniem przez nieco bardziej zaawansowanych użyszkodników.

Skrypt do działania wymaga oczywiście jQuery. Dzięki jednemu bindowi, możemy zablokować otwieranie menu kontekstowego znajdującego się pod prawym klawiszem myszy, wywołując go na dowolnym elemencie struktury strony (możemy nawet wybrać, że prawy klawisz myszy ma być zablokowany wyłącznie na obrazkach - img).

Dodatkowo, skrypt oferuje blokowanie używania kombinacji klawiszy CTRL+C oraz CTRL+V, dzięki czemu mniej zorientowani użyszkodnicy nie skopiują treści ze strony ani za pomocą opcji Kopiuj z menu kontekstowego, ani za pomocą kopiowania "klawiaturą" po zaznaczeniu treści. A skrypt widać poniżej:

$(document).ready(function(){
  var $ctrl = false;
  var $key = 17, $c = 67, $v = 86, $alt = 18; // kody kolejnych klawiszy - ctrl, litery c oraz v, klawisz alt
  // musimy uwzględnić pomijanie klawisza alt, ponieważ jego naciśnięcie powoduje
  // wyzwolenie bindów o numerach 18 i 17, co skutkuje blokadą klawisza c
  // i nie zezwala na wpisanie litery "ć"
  $(document).bind("contextmenu",function(e){ 
    return false; // blokujemy menu kontekstowe
  });
  // jeżeli trzymamy wciśniety klawisz ctrl,
  // zmienna $ctrl ma flage ustawiona na true
  // dzieki czemu
  // mozemy sprawdzac kolejny wciskany klawisz w kolejnym 'keydown'
  $(document).keydown(function(e) {
    if (e.keyCode == $key) { $ctrl = true; }
  }).keyup(function(e) {
    if (e.keyCode == $key) { $ctrl = false; }
  });
  $(document).keydown(function(e) {
    if (e.keyCode == $alt) { $ctrl = false; }
    // odblokowujemy kombinację ALT+C przestawiając $ctrl na FALSE
  });
  $(document).keydown(function(e) {
    if ($ctrl && (e.keyCode == $v || e.keyCode == $c)) {
      return false;
      // jezeli byl wcisniety klawisz ctrl 
      // a razem z nim literka c lub v, blokujemy
    }
  });
});

 

DEMO jest na tej stronie;) Wystarczy poklikać prawym klawiszem lub spróbować skopiować content ;)

Komentarze

A jak to zmienić aby było tylko dla obrazków?
A czy w opisie i tytule nie ma tego wyjaśnionego?;) Blokada na menu kontekstowe (Prawy przycisk myszy) oraz CTRL+C/V :) Menu przeglądarki niestety nie jest do zablokowania, tak samo jak użycie PrintScreen :)
zaznaczylam tekst kiknelam w menu edycja i kopiuj. wklejilam po chwili w google, nie wiem czy dziala to poprawnie
A tam pitolisz, skrypt uległ update'owi, już działa poprawnie;)
tylko dobrze byłoby nie blokowac jednocześnie możliwości wpisania "ci" :P taki drobiazg :D
Comments closed...