1+ // here we will implement the function to prevent user to take screenshot of the web page
2+ function noScreenshot ( ) {
3+ // Disable right click
4+ document . addEventListener ( 'contextmenu' , event => event . preventDefault ( ) ) ;
5+ // Disable keyboard shortcuts
6+ document . addEventListener ( 'keydown' , event => {
7+ if ( event . ctrlKey && ( event . key === 'c' || event . key === 'u' || event . key === 'i' || event . key === 'j' || event . key === 'k' || event . key === 's' ) || ( event . metaKey && ( event . key === 'c' || event . key === 'u' || event . key === 'i' || event . key === 'j' || event . key === 'k' || event . key === 's' ) ) ) {
8+ event . preventDefault ( ) ;
9+ }
10+ } ) ;
11+ // Disable inspect element
12+ document . addEventListener ( 'keydown' , event => {
13+ if ( ( event . ctrlKey && event . shiftKey && event . key === 'i' ) || ( event . metaKey && event . shiftKey && event . key === 'i' ) ) {
14+ event . preventDefault ( ) ;
15+ }
16+ } ) ;
17+ // Disable print screen
18+ document . addEventListener ( 'keydown' , event => {
19+ if ( ( event . key === 'PrintScreen' ) ) {
20+ event . preventDefault ( ) ;
21+ }
22+ } ) ;
23+ // Disable screenshot
24+ document . addEventListener ( 'keydown' , event => {
25+ if ( ( event . ctrlKey && event . shiftKey && event . key === 's' ) || ( event . ctrlKey && event . key === 's' ) || ( event . metaKey && event . shiftKey && event . key === 's' ) || ( event . metaKey && event . key === 's' ) ) {
26+ event . preventDefault ( ) ;
27+ }
28+ } ) ;
29+ // Disable screenshot
30+ document . addEventListener ( 'keydown' , event => {
31+ if ( ( event . ctrlKey && event . key === 's' ) || ( event . metaKey && event . key === 's' ) ) {
32+ event . preventDefault ( ) ;
33+ }
34+ } ) ;
35+ // Disable screenshot
36+ document . addEventListener ( 'keydown' , event => {
37+ if ( event . metaKey && event . shiftKey && event . key === 's' ) {
38+ event . preventDefault ( ) ;
39+ }
40+ } ) ;
41+ // Disable screenshot
42+ document . addEventListener ( 'keydown' , event => {
43+ if ( event . metaKey && event . key === 's' ) {
44+ event . preventDefault ( ) ;
45+ }
46+ } ) ;
47+ // Disable screenshot
48+ document . addEventListener ( 'keydown' , event => {
49+ if ( event . ctrlKey && event . shiftKey && event . key === 'i' ) {
50+ event . preventDefault ( ) ;
51+ }
52+ } ) ;
53+ // Disable screenshot
54+ document . addEventListener ( 'keydown' , event => {
55+ if ( event . metaKey && event . shiftKey && event . key === 'i' ) {
56+ event . preventDefault ( ) ;
57+ }
58+ } ) ;
59+ // Disable screenshot
60+ document . addEventListener ( 'keydown' , event => {
61+ if ( event . ctrlKey && event . key === 'i' ) {
62+ event . preventDefault ( ) ;
63+ }
64+ } ) ;
65+ // Disable screenshot
66+ document . addEventListener ( 'keydown' , event => {
67+ if ( event . metaKey && event . key === 'i' ) {
68+ event . preventDefault ( ) ;
69+ }
70+ } ) ;
71+ // Disable screenshot
72+ document . addEventListener ( 'keydown' , event => {
73+ if ( ( event . ctrlKey && event . shiftKey && event . key === 'j' ) || ( event . ctrlKey && event . key === 'j' ) || ( event . metaKey && event . shiftKey && event . key === 'j' ) || ( event . metaKey && event . key === 'j' ) || ( event . ctrlKey && event . shiftKey && event . key === 'k' ) || ( event . ctrlKey && event . key === 'k' ) || ( event . metaKey && event . shiftKey && event . key === 'k' ) || ( event . metaKey && event . key === 'k' ) ) {
74+ event . preventDefault ( ) ;
75+ }
76+ } ) ;
77+
78+ // disable screenshot for mac users
79+ document . addEventListener ( 'keydown' , event => {
80+ if ( ( event . metaKey && event . shiftKey && event . key === 'j' ) || ( event . metaKey && event . shiftKey && event . key === '4' ) ) {
81+ event . preventDefault ( ) ;
82+ alert ( 'Screenshot is disabled' ) ;
83+ }
84+
85+ if ( event . metaKey && event . key === '$' ) {
86+ event . preventDefault ( ) ; // Prevent the default action
87+ }
88+
89+ } ) ;
90+ document . addEventListener ( 'keydown' , event => {
91+ if ( event . metaKey && event . shiftKey && event . key === 'k' ) {
92+ event . preventDefault ( ) ;
93+ }
94+ } ) ;
95+ // disable all function key
96+ document . addEventListener ( 'keydown' , event => {
97+ if ( event . key === 'F1' || event . key === 'F2' || event . key === 'F3' || event . key === 'F5' || event . key === 'F6' || event . key === 'F7' || event . key === 'F8' || event . key === 'F9' || event . key === 'F10' || event . key === 'F11' || event . key === 'F12' ) {
98+ event . preventDefault ( ) ;
99+ }
100+ } ) ;
101+
102+ document . addEventListener ( 'keydown' , event => {
103+ if ( event . ctrlKey && event . key === 'F4' ) {
104+ event . preventDefault ( ) ;
105+ }
106+ } ) ;
107+
108+ document . addEventListener ( 'keydown' , event => {
109+ if ( event . ctrlKey || event . metaKey ) {
110+ overlayScreen ( ) ;
111+ }
112+ } ) ;
113+ }
114+
115+ function overlayScreen ( ) {
116+ const overlay = document . createElement ( 'div' ) ;
117+ overlay . style . position = 'fixed' ;
118+ overlay . style . top = '0' ;
119+ overlay . style . left = '0' ;
120+ overlay . style . width = '100%' ;
121+ overlay . style . height = '100%' ;
122+ overlay . style . background = 'rgba(255, 255, 255, 1)' ; // semi-transparent white background
123+ overlay . style . zIndex = '9999' ;
124+ overlay . style . display = 'flex' ;
125+ overlay . style . alignItems = 'center' ;
126+ overlay . style . justifyContent = 'center' ;
127+
128+ const message = document . createElement ( 'div' ) ;
129+ message . textContent = 'Press Esc to close. Screenshots are disabled.' ;
130+ message . style . fontSize = '24px' ;
131+ message . style . color = 'black' ; // You can adjust the color as needed
132+ message . style . padding = '20px' ; // Add padding to the message
133+ message . style . background = 'rgba(255, 255, 255, 0.9)' ; // semi-transparent white background for message
134+ message . style . borderRadius = '10px' ; // Rounded corners for the message box
135+ message . style . boxShadow = '0px 0px 10px rgba(0, 0, 0, 0.5)' ; // Drop shadow for the message box
136+
137+ overlay . appendChild ( message ) ;
138+ document . body . appendChild ( overlay ) ;
139+
140+ // Disable pointer events on body while the overlay is active
141+ document . body . style . pointerEvents = 'none' ;
142+
143+ document . addEventListener ( 'keydown' , escListener ) ;
144+
145+ function escListener ( event ) {
146+ if ( event . key === 'Escape' ) {
147+ document . body . removeChild ( overlay ) ;
148+ document . body . style . pointerEvents = 'auto' ; // Re-enable pointer events on body
149+ document . removeEventListener ( 'keydown' , escListener ) ;
150+ }
151+ }
152+ }
153+ module . exports = noScreenshot ;
0 commit comments