Notice
Recent Posts
Recent Comments
Link
투케이2K
503. (javaScript) [간단 소스] 자바스크립트 Web 웹 크롬 브라우저 키이벤트 및 마우스 우클릭 이벤트 감지 개발자 도구 진입 막기 코드 본문
JavaScript
503. (javaScript) [간단 소스] 자바스크립트 Web 웹 크롬 브라우저 키이벤트 및 마우스 우클릭 이벤트 감지 개발자 도구 진입 막기 코드
투케이2K 2026. 3. 3. 19:40728x90
반응형
[개발 환경 설정]
개발 툴 : Edit++
개발 언어 : JavaScript

[소스 코드]
-----------------------------------------------------------------------------------------
[사전 설명 및 설정 사항]
-----------------------------------------------------------------------------------------
- 개발 환경 : Web
- 개발 기술 : JavaScript (자바스크립트) / chrome / devOption
- 사전) 자바스크립트 addEventListener 간략 설명 :
>> addEventListener() 는 브라우저 DOM 요소(또는 window, document 등) 에 이벤트 핸들러(콜백 함수)를 등록하는 표준 방법입니다.
>> 기본 이벤트 리스너 등록 문법 : target.addEventListener(type, listener, options);
- type : 이벤트 이름 (예: "click", "keydown", "resize" 등)
- listener : 이벤트 발생 시 실행할 함수 (콜백)
- options : 캡처링, 버블링, 한 번만 실행 등 세부 설정(선택)
$ capture: true = 캡처링 단계에서 먼저 이벤트 실행
$ once: true = 이벤트를 딱 한 번만 실행
$ passive: true = 이벤트 핸들러에서 preventDefault() 호출 금지 / 스크롤 성능 최적화용
$ 단순 불린 값 (옛 방식) = element.addEventListener("click", handler, true); // capture 모드 || element.addEventListener("click", handler, false); // bubbling 모드(기본)
>> 브라우저 이벤트 흐름 :
- 캡처 단계 (Capturing phase) : 이벤트가 window → document → body → 목표 요소로 내려옴
- 타깃 단계 (Target phase) : 실제 이벤트 대상 요소에서 실행
- 버블링 단계 (Bubbling phase) : 이벤트가 목표 요소 → body → document → window 로 올라감
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
[소스 코드]
-----------------------------------------------------------------------------------------
// --------------------------------------
// ✅ 마우스 우클릭 페이지 소스 보기 막기 코드
// --------------------------------------
['mousedown', 'mouseup', 'contextmenu'].forEach(type => {
window.addEventListener(type, (e) => {
try {
console.warn(`[mouse] : ${type} : `, {
button: e.button, // 0=좌, 1=중, 2=우 (없으면 undefined)
buttons: e.buttons, // 비트마스크: 1=좌, 2=우, 4=중
which: e.which, // 과거 호환 (권장X)
defaultPrevented: e.defaultPrevented,
target: e.target && e.target.tagName
}, e);
if (type == 'contextmenu'){
console.log('contextmenu : event : ', e);
const pointerType = e.pointerType || null;
console.log('contextmenu : pointerType : ', pointerType);
if (pointerType == 'mouse'){ // ✅ 마우스 우클릭
// ✅ 메뉴 자체 표시 막기
if (ADMIN_AUTH_FLAG == false){ // ❌ 관리자 인증이 안된 경우
adminAuthPopup("※ 마우스 우클릭 : 관리자 인증 후 사용할 수 있는 기능입니다");
e.preventDefault();
e.stopPropagation();
}
}
}
}
catch(exception){
console.error('[mouse] : Logic : exception : ', exception);
}
}, { capture: true });
});
// --------------------------------------
// ✅ F12, Ctrl+U 키 이벤트 방지 코드
// --------------------------------------
document.addEventListener('keydown', function (e) {
try {
const key = e.key.toUpperCase();
const ctrl = e.ctrlKey || e.metaKey;
// ✅ F12
if (e.key === "F12" || e.keyCode === 123) {
console.warn("keydown : F12 감지됨");
if (ADMIN_AUTH_FLAG == false){ // ❌ 관리자 인증이 안된 경우
adminAuthPopup("※ F12 : 관리자 인증 후 사용할 수 있는 기능입니다");
e.preventDefault();
e.stopPropagation();
}
}
// ✅ Ctrl + U
if (ctrl && key === "U") {
console.warn("keydown : Ctrl + U 감지됨");
if (ADMIN_AUTH_FLAG == false){ // ❌ 관리자 인증이 안된 경우
adminAuthPopup("※ Ctrl + U : 관리자 인증 후 사용할 수 있는 기능입니다");
e.preventDefault();
e.stopPropagation();
}
}
// ✅ Ctrl + Shift + I (개발자 도구)
if (ctrl && e.shiftKey && key === "I") {
console.warn("keydown : Ctrl + Shift + I 감지됨");
if (ADMIN_AUTH_FLAG == false){ // ❌ 관리자 인증이 안된 경우
adminAuthPopup("※ Ctrl + Shift + I : 관리자 인증 후 사용할 수 있는 기능입니다");
e.preventDefault();
e.stopPropagation();
}
}
// ✅ Ctrl + Shift + J (콘솔 패널)
if (ctrl && e.shiftKey && key === "J") {
console.warn("keydown : Ctrl + Shift + J 감지됨");
if (ADMIN_AUTH_FLAG == false){ // ❌ 관리자 인증이 안된 경우
adminAuthPopup("※ Ctrl + Shift + J : 관리자 인증 후 사용할 수 있는 기능입니다");
e.preventDefault();
e.stopPropagation();
}
}
}
catch(exception){
console.error('keydown : Logic : exception : ', exception);
}
});
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
[참고 사이트]
-----------------------------------------------------------------------------------------
[크롬 F12 개발자 도구 사용해 로컬 스토리지 , 세션 , 쿠키 저장된 정보 확인 방법]
https://kkh0977.tistory.com/1145
https://blog.naver.com/kkh0977/222476096072?trackingCode=blog_bloghome_searchlist
[크롬 F12 개발자 도구 사용해 네트워크 상태 및 리소드 로드 속도 확인]
https://kkh0977.tistory.com/947
https://blog.naver.com/kkh0977/222423344731?trackingCode=blog_bloghome_searchlist
[onkeydown 사용해 모바일 웹뷰 가상 키보드 엔터 (enter) 키 입력 이벤트 감지]
https://kkh0977.tistory.com/2239
https://blog.naver.com/kkh0977/222822777358?trackingCode=blog_bloghome_searchlist
-----------------------------------------------------------------------------------------
728x90
반응형
'JavaScript' 카테고리의 다른 글
Comments
