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