Skip to content

Commit 487cc65

Browse files
committed
mobile view
2 parents 61c870c + deccac5 commit 487cc65

File tree

2 files changed

+107
-6
lines changed

2 files changed

+107
-6
lines changed

dist/secure-web.js

+106-5
Original file line numberDiff line numberDiff line change
@@ -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

266367
function handleTouchStart(event) {

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "secure-web",
3-
"version": "1.2.1",
3+
"version": "1.2.4",
44
"description": "Secure-Web is an npm package that prevents users from taking screenshots of your web page by securing it against various methods of screenshot capture. With customizable options to tailor the security measures according to your needs, Secure-Web ensures that your sensitive information remains protected and inaccessible to unauthorized individuals. Embrace the power of Secure-Web and take control of your online security today.",
55
"main": "dist/secure-web.js",
66
"scripts": {

0 commit comments

Comments
 (0)