@@ -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,20 +102,54 @@ 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 . 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 ( ) ;
109114 }
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+ } ) ( ) ;
114153 }
115154
116155 if ( disablePrintScreen ) {
@@ -179,7 +218,7 @@ function noScreenshot(options, overlayId) {
179218 }
180219 } ) ;
181220 }
182-
221+
183222 // Disable pointer events on body while the overlay is active
184223 // document.body.style.pointerEvents = 'none';
185224 document . body . style . pointerEvents = 'auto' ;
@@ -276,6 +315,41 @@ function HideOverlayScreen(overlayId) {
276315 //document.removeEventListener('keydown', escListener);
277316}
278317
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+
279353if ( isNode ) {
280354 module . exports = noScreenshot ;
281355} else {
0 commit comments