@@ -20,6 +20,11 @@ function noScreenshot(options, overlayId) {
2020 ctrlOverlay = true ,
2121 altOverlay = false ,
2222 shiftOverlay = false ,
23+ // new at 1.2.2
24+ clearConsole = true ,
25+ clearSensitiveContent = [
26+ 'body'
27+ ] ,
2328 } = options ;
2429
2530 if ( disableRightClick ) {
@@ -97,11 +102,25 @@ function noScreenshot(options, overlayId) {
97102 }
98103
99104 if ( disableInspectElement ) {
105+
106+ // Prevent certain keyboard shortcuts
100107 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' ) {
102113 event . preventDefault ( ) ;
103114 }
104115 } ) ;
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 ) ;
105124 }
106125
107126 if ( disablePrintScreen ) {
@@ -118,6 +137,7 @@ function noScreenshot(options, overlayId) {
118137 } )
119138
120139 }
140+
121141 if ( disableFunctionKeys ) {
122142 document . addEventListener ( 'keydown' , event => {
123143 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) {
136156
137157 if ( mouseLeave ) {
138158 document . addEventListener ( 'mouseleave' , ( ) => {
139- overlayScreen ( overlayId ) ; // Overlay when cursor leaves the window
159+ overlayScreen ( overlayId ) ;
140160 } ) ;
141161 }
142162
@@ -170,9 +190,13 @@ function noScreenshot(options, overlayId) {
170190 } ) ;
171191 }
172192
173- // Disable pointer events on body while the overlay is active
193+ if ( clearConsole ) {
194+ clearConsoleArea ( ) ;
195+ }
174196
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' ;
176200 document . addEventListener ( 'keydown' , escListener ) ;
177201
178202
@@ -200,7 +224,7 @@ function overlayScreen(overlayId) {
200224 customOverlay . style . width = '100%' ;
201225 customOverlay . style . height = '100%' ;
202226 customOverlay . style . zIndex = '9999' ;
203- customOverlay . style . display = 'flex ' ;
227+ customOverlay . style . display = 'block ' ;
204228 customOverlay . style . alignItems = 'center' ;
205229 customOverlay . style . justifyContent = 'center' ;
206230
@@ -221,6 +245,11 @@ function overlayScreen(overlayId) {
221245 }
222246 }
223247
248+ if ( document . getElementById ( 'no-screenshot-overlay' ) ) {
249+ document . getElementById ( 'no-screenshot-overlay' ) . style . display = 'flex' ;
250+ return ;
251+ }
252+
224253 const overlay = document . createElement ( 'div' ) ;
225254 overlay . id = 'no-screenshot-overlay' ;
226255 overlay . style . position = 'fixed' ;
@@ -245,6 +274,7 @@ function overlayScreen(overlayId) {
245274
246275 overlay . appendChild ( message ) ;
247276 document . body . appendChild ( overlay ) ;
277+ document . body . style . pointerEvents = 'none' ;
248278}
249279
250280
@@ -254,13 +284,84 @@ function HideOverlayScreen(overlayId) {
254284 if ( customOverlay ) {
255285 customOverlay . style . display = 'none' ; // Hide the custom overlay
256286 document . body . style . pointerEvents = 'auto' ; // Re-enable pointer events on body
287+ if ( clearSensitiveContent ) {
288+ location . reload ( ) ;
289+ }
257290 return ;
258291 }
259292 }
260293 var overlay = document . getElementById ( 'no-screenshot-overlay' ) ;
261294 document . body . removeChild ( overlay ) ;
262295 document . body . style . pointerEvents = 'auto' ; // Re-enable pointer events on body
263296 //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+ } ) ( ) ;
264365}
265366
266367function handleTouchStart ( event ) {
0 commit comments