@@ -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,20 +102,54 @@ 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 . metaKey ) && event . shiftKey && event . key === 'i' ) {
102
- event . preventDefault ( ) ;
103
- }
104
- if ( ( event . ctrlKey || event . metaKey ) && event . shiftKey && event . key === 'c' ) {
105
- event . preventDefault ( ) ;
106
- }
107
- if ( event . keyCode === 123 ) {
108
- event . preventDefault ( ) ;
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' ) {
113
+ event . preventDefault ( ) ;
109
114
}
110
- } ) ;
111
- document . addEventListener ( 'contextmenu' , event => {
112
- event . preventDefault ( ) ;
113
- } ) ;
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
+ ( function ( ) {
124
+ let devtoolsOpen = false ;
125
+
126
+ const detectDevTools = ( ) => {
127
+ const threshold = 160 ;
128
+ const isDevToolsOpen = ( ) => {
129
+ // Detect if the developer tools are open by checking dimensions
130
+ const widthDiff = window . outerWidth - window . innerWidth ;
131
+ const heightDiff = window . outerHeight - window . innerHeight ;
132
+ return widthDiff > threshold || heightDiff > threshold ;
133
+ } ;
134
+
135
+ if ( isDevToolsOpen ( ) ) {
136
+ if ( ! devtoolsOpen ) {
137
+ devtoolsOpen = true ;
138
+ alert ( 'Developer tools are open!' ) ;
139
+ console . warn ( 'Developer tools are open!' ) ;
140
+ overlayScreen ( overlayId ) ;
141
+ clearSensitiveData ( clearSensitiveContent ) ;
142
+ }
143
+ } else {
144
+ if ( devtoolsOpen ) {
145
+ devtoolsOpen = false ;
146
+ HideOverlayScreen ( overlayId ) ;
147
+ }
148
+ }
149
+ } ;
150
+ // Run the check every second
151
+ setInterval ( detectDevTools , 1000 ) ;
152
+ } ) ( ) ;
114
153
}
115
154
116
155
if ( disablePrintScreen ) {
@@ -179,7 +218,7 @@ function noScreenshot(options, overlayId) {
179
218
}
180
219
} ) ;
181
220
}
182
-
221
+
183
222
// Disable pointer events on body while the overlay is active
184
223
// document.body.style.pointerEvents = 'none';
185
224
document . body . style . pointerEvents = 'auto' ;
@@ -276,6 +315,41 @@ function HideOverlayScreen(overlayId) {
276
315
//document.removeEventListener('keydown', escListener);
277
316
}
278
317
318
+
319
+ function clearConsoleArea ( ) {
320
+ var checkStatus ;
321
+ var element = document . createElement ( 'any' ) ;
322
+ element . __defineGetter__ ( 'id' , function ( ) {
323
+ checkStatus = 'on' ;
324
+ } ) ;
325
+
326
+ setInterval ( function ( ) {
327
+ checkStatus = 'off' ;
328
+ console . log ( element ) ;
329
+ console . clear ( ) ;
330
+ } , 1000 ) ;
331
+ }
332
+
333
+
334
+ function clearSensitiveData ( selector ) {
335
+ if ( selector ) {
336
+ if ( Array . isArray ( selector ) ) {
337
+ selector . forEach ( sel => {
338
+ const elements = document . querySelectorAll ( sel ) ;
339
+ elements . forEach ( el => el . innerHTML = '' ) ;
340
+ } ) ;
341
+ } else if ( typeof selector === 'string' ) {
342
+ const element = document . querySelector ( selector ) ;
343
+ if ( element ) {
344
+ element . innerHTML = '' ;
345
+ }
346
+ }
347
+ } else {
348
+ // Default clear body if no selector provided or if false
349
+ document . body . innerHTML = '' ;
350
+ }
351
+ }
352
+
279
353
if ( isNode ) {
280
354
module . exports = noScreenshot ;
281
355
} else {
0 commit comments