"Print Screen"A co z klawiszem "Print Screen"? Niestety tego klawisza zablokować nie można. Ale zastanówmy się chwilkę co ten klawisz dokładnie robi i jak można temu zaradzić. Wciskając klawisz "Print Screen" kopiujemy nasz aktualny obraz ekranu (dane) do schowka (pamięci). Nie możemy nic poradzić na to że po każdym wciśnięciu tego klawisza pewne dane zostaną skopiowane do pamięci. Jednak możemy zapobiec skopiowaniu tych danych z pamięci do innego miejsca. A teraz konkretnie. W JavaScript istnieje bardzo prosta metoda czyszczenia calutkiej zawartości schowka. Niestety musimy zdecydować w jakich sytuacjach nasza strona będzie tę metodę wykorzystywała. Skoro nie możemy wykryć wciśnięcia klawisza "Print Screen" musimy sami przewidzieć w jakim momencie schowek opróżnić. Możemy zrobić tak żeby strona kasowała zawartość schowka cały czas lub co kilka sekund. Niestety nie jest to zbyt dobre rozwiązanie. Inne aplikacje również mogą potrzebować schowka i mogłyby w takim wypadku pracować niepoprawnie. Jednak możemy wykorzystać zdarzenie "onBlur", dzięki któremu strona będzie czyściła schowek za każdym razem gdy będziemy przechodzić z okna naszej strony do innego okna, np. programu graficznego. Po zrzuceniu zawartości ekranu do schowka musimy przecież gdzieś ten obraz wkleić. Żeby to zrobić musimy opuścić okno naszej stronki i przejść np. do MS-Paint. I właśnie wtedy do akcji wkracza nasz skrypt oczyszczający schowek. Ten kod zadziała tylko na IE 5.5 lub nowszych ale za to jest prościutki:
Kod
<BODY onblur="window.clipboardData.clearData();">
I w tym momencie większość natrętnych userów poddaje się. Pierwszy raz widzą że metoda "Print Screen" nie działa. Jednak jeśli wiemy co się tak naprawdę dzieje możemy takie zabezpieczenie łatwo obejść. Wystarczy deaktywować okno strony poprzez kliknięcie gdzieś na pulpicie albo na pasku zadań, wcisnąć "Print Screen" i nadal nie klikając w okno strony przejść do programu graficznego. Zdarzenie "onBlur" wtedy nie zadziała. Ale i w tym wypadku nie jesteśmy bezradni. Możemy zrobić coś naprawdę wrednego. Znaczna część internautów której nie interesuje jedynie bezmyślne kopiowanie będzie takim rozwiązaniem wręcz oburzona, więc dlatego przemyślmy dobrze sprawę zanim zastosujemy kolejne utrudnienie takie lub podobne do opisanego poniżej.
Kod
<BODY onblur="window.document.all('protected').style.visibility='hidden';
window.clipboardData.clearData();"
onfocus="window.document.all('protected').style.visibility='visible';">
<DIV ID="protected">Ochraniana zawartość</DIV>
</BODY>
W tym wypadku zawartość kontenera DIV o nazwie "protected" będzie widoczna jedynie przy aktywnym oknie przeglądarki, a przy deaktywacji okna zawartość będzie znikała. W przykładzie tym manipulujemy tu właściwością VISIBILITY kontenera. W aktywnym oknie wynosi ona "visible" czyli widzialna, a w nieaktywnym oknie przyjmuje ona wartość "hidden" czyli ukryta. I to rozwiązanie zadziała, jednak to bardzo zirytuje zwykłych użytkowników.
Większość zabezpieczeń, to JavaScript. Można go wyłączyć jednym kliknięciem myszy