@@ -20,6 +20,11 @@ function noScreenshot(options, overlayId) {
20
20
ctrlOverlay = true ,
21
21
altOverlay = false ,
22
22
shiftOverlay = false ,
23
+ // new at 1.2.2
24
+ clearConsole = true ,
25
+ clearSensitiveContent = [
26
+ 'body'
27
+ ] ,
23
28
} = options ;
24
29
25
30
if ( disableRightClick ) {
@@ -97,11 +102,25 @@ function noScreenshot(options, overlayId) {
97
102
}
98
103
99
104
if ( disableInspectElement ) {
105
+
106
+ // Prevent certain keyboard shortcuts
100
107
document . addEventListener ( 'keydown' , event => {
101
- if ( ( event . ctrlKey && event . shiftKey && event . key === 'i' ) || ( event . metaKey && event . shiftKey && event . key === 'i' ) ) {
108
+ if ( ( event . ctrlKey && event . shiftKey && event . key === 'I' ) ||
109
+ ( event . metaKey && event . shiftKey && event . key === 'I' ) ||
110
+ ( event . ctrlKey && event . shiftKey && event . key === 'C' ) ||
111
+ ( event . metaKey && event . shiftKey && event . key === 'C' ) ||
112
+ event . key === 'F12' ) {
102
113
event . preventDefault ( ) ;
103
114
}
104
115
} ) ;
116
+
117
+ document . addEventListener ( 'contextmenu' , event => event . preventDefault ( ) ) ;
118
+
119
+ // clear console every secound
120
+ clearConsoleArea ( ) ;
121
+
122
+ // detect if inspect element open
123
+ detectInspectElement ( clearSensitiveContent ) ;
105
124
}
106
125
107
126
if ( disablePrintScreen ) {
@@ -118,6 +137,7 @@ function noScreenshot(options, overlayId) {
118
137
} )
119
138
120
139
}
140
+
121
141
if ( disableFunctionKeys ) {
122
142
document . addEventListener ( 'keydown' , event => {
123
143
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' ) {
@@ -136,7 +156,7 @@ function noScreenshot(options, overlayId) {
136
156
137
157
if ( mouseLeave ) {
138
158
document . addEventListener ( 'mouseleave' , ( ) => {
139
- overlayScreen ( overlayId ) ; // Overlay when cursor leaves the window
159
+ overlayScreen ( overlayId ) ;
140
160
} ) ;
141
161
}
142
162
@@ -170,9 +190,13 @@ function noScreenshot(options, overlayId) {
170
190
} ) ;
171
191
}
172
192
173
- // Disable pointer events on body while the overlay is active
193
+ if ( clearConsole ) {
194
+ clearConsoleArea ( ) ;
195
+ }
174
196
175
- document . body . style . pointerEvents = 'none' ;
197
+ // Disable pointer events on body while the overlay is active
198
+ // document.body.style.pointerEvents = 'none';
199
+ document . body . style . pointerEvents = 'auto' ;
176
200
document . addEventListener ( 'keydown' , escListener ) ;
177
201
178
202
@@ -200,7 +224,7 @@ function overlayScreen(overlayId) {
200
224
customOverlay . style . width = '100%' ;
201
225
customOverlay . style . height = '100%' ;
202
226
customOverlay . style . zIndex = '9999' ;
203
- customOverlay . style . display = 'flex ' ;
227
+ customOverlay . style . display = 'block ' ;
204
228
customOverlay . style . alignItems = 'center' ;
205
229
customOverlay . style . justifyContent = 'center' ;
206
230
@@ -221,6 +245,11 @@ function overlayScreen(overlayId) {
221
245
}
222
246
}
223
247
248
+ if ( document . getElementById ( 'no-screenshot-overlay' ) ) {
249
+ document . getElementById ( 'no-screenshot-overlay' ) . style . display = 'flex' ;
250
+ return ;
251
+ }
252
+
224
253
const overlay = document . createElement ( 'div' ) ;
225
254
overlay . id = 'no-screenshot-overlay' ;
226
255
overlay . style . position = 'fixed' ;
@@ -245,6 +274,7 @@ function overlayScreen(overlayId) {
245
274
246
275
overlay . appendChild ( message ) ;
247
276
document . body . appendChild ( overlay ) ;
277
+ document . body . style . pointerEvents = 'none' ;
248
278
}
249
279
250
280
@@ -254,13 +284,84 @@ function HideOverlayScreen(overlayId) {
254
284
if ( customOverlay ) {
255
285
customOverlay . style . display = 'none' ; // Hide the custom overlay
256
286
document . body . style . pointerEvents = 'auto' ; // Re-enable pointer events on body
287
+ if ( clearSensitiveContent ) {
288
+ location . reload ( ) ;
289
+ }
257
290
return ;
258
291
}
259
292
}
260
293
var overlay = document . getElementById ( 'no-screenshot-overlay' ) ;
261
294
document . body . removeChild ( overlay ) ;
262
295
document . body . style . pointerEvents = 'auto' ; // Re-enable pointer events on body
263
296
//document.removeEventListener('keydown', escListener);
297
+ if ( clearSensitiveContent ) {
298
+ location . reload ( ) ;
299
+ }
300
+ }
301
+
302
+
303
+ function clearConsoleArea ( ) {
304
+ var checkStatus ;
305
+ var element = document . createElement ( 'any' ) ;
306
+ element . __defineGetter__ ( 'id' , function ( ) {
307
+ checkStatus = 'on' ;
308
+ } ) ;
309
+
310
+ setInterval ( function ( ) {
311
+ checkStatus = 'off' ;
312
+ console . log ( element ) ;
313
+ console . clear ( ) ;
314
+ } , 1000 ) ;
315
+ }
316
+
317
+
318
+ function clearSensitiveData ( selector ) {
319
+ if ( selector ) {
320
+ if ( Array . isArray ( selector ) ) {
321
+ selector . forEach ( sel => {
322
+ const elements = document . querySelectorAll ( sel ) ;
323
+ elements . forEach ( el => el . innerHTML = '' ) ;
324
+ } ) ;
325
+ } else if ( typeof selector === 'string' ) {
326
+ const element = document . querySelector ( selector ) ;
327
+ if ( element ) {
328
+ element . innerHTML = '' ;
329
+ }
330
+ }
331
+ }
332
+ }
333
+
334
+
335
+ function detectInspectElement ( clearSensitiveContent ) {
336
+ ( function ( ) {
337
+ let devtoolsOpen = false ;
338
+ const detectDevTools = ( ) => {
339
+ const threshold = 160 ;
340
+ const isDevToolsOpen = ( ) => {
341
+ // Detect if the developer tools are open by checking dimensions
342
+ const widthDiff = window . outerWidth - window . innerWidth ;
343
+ const heightDiff = window . outerHeight - window . innerHeight ;
344
+ return widthDiff > threshold || heightDiff > threshold ;
345
+ } ;
346
+
347
+ if ( isDevToolsOpen ( ) ) {
348
+ if ( ! devtoolsOpen ) {
349
+ devtoolsOpen = true ;
350
+ alert ( 'Developer tools are open!' ) ;
351
+ console . warn ( 'Developer tools are open!' ) ;
352
+ overlayScreen ( overlayId ) ;
353
+ clearSensitiveData ( clearSensitiveContent ) ;
354
+ }
355
+ } else {
356
+ if ( devtoolsOpen ) {
357
+ devtoolsOpen = false ;
358
+ HideOverlayScreen ( overlayId ) ;
359
+ }
360
+ }
361
+ } ;
362
+ // Run the check every second
363
+ setInterval ( detectDevTools , 1000 ) ;
364
+ } ) ( ) ;
264
365
}
265
366
266
367
function handleTouchStart ( event ) {
0 commit comments