티스토리 뷰
쉬프트, 컨트롤 클릭 시 새탭, 새창 띄우지 않기 (Shift+Click, Ctrl+Click do not open new tabs/windows)
ReturnToHome 2017. 9. 2. 18:38- 쉬프트 (Shift), 컨트롤 (Ctrl), 알트 (Alt) 키 누른채로 레이어 띄우기
안녕하세요. 오늘은 쉬프트, 컨트롤, 알트 키를 누른채로 클릭하여 레이어 창을 띄우는 법을 메모하고자 합니다.
보통의 브라우저들에서 앵커태그를 쉬프트, 컨트롤 키를 누르고 클릭 시 새탭, 새창으로 뜨게 되는데요,
이 새탭, 새창 이벤트를 무시하고 싶은 경우에 사용하시면 되겠습니다.
그냥 아무것도 안 누르고 클릭 하면 되지 뭐하러 하느냐... 하시면 할 말이 없는데요.
한 가지 예를 들자면 ..
사이트 관리자의 경우 레이어 팝업에서 자신만이 식별 할 수 있는 어떠한 정보를 확인하고자 할 때 사용될 수 있습니다.
바로 소스 코드로 확인해 보겠습니다.
$(function() {
$('.btn').on('click', function(event) {
// pressed shift
if (event.shiftKey) {
// do something
}
// pressed ctrl
if (event.ctrlKey) {
// do something
}
// pressed alt
if (event.altKey) {
// do something
}
// pressed with shift and ctrl
if (event.shiftKey && event.ctrlKey) {
// do something
}
// prevent browser default event
event.preventDefault();
// do open layer popup
});
});
<a href="#" class="btn">Open Layer</a>
평소 보시던 코드들과 별다른 점이 없어 보입니다. 네, 크게 다른 것은 없구요 중요한 포인트 몇 개만 짚어보도록 하겠습니다.
1. 앵커태그의 href="#"
보통 위의 소스 처럼 앵커태그 클릭 시 함수를 호출하여 그 함수 내에서 레이어 팝업을 띄우는 방법이 대다수 일 것입니다.
그렇게 함수를 호출하여 레이어 팝업을 띄울 시에 앵커태그의 href attribute 의 값은 href="javascript:앵커태그함수호출();" 이지 않는 이상
함수 호출 후 화면 최상단으로 올라가지 않기 위해서 href="javascript:void(0);", href="#;" 처럼 코딩이 되어 있을 것입니다.
여기서 중요한 것이 href="#;" 를 할 경우에는 Internet Explorer 에서는 Ctrl 클릭이 무조건 새탭으로 띄워진다는 것입니다.
그렇기 때문에 href 의 값은 href="#" 또는 href="javascript:void(0);" 처럼 코딩이 되어야 할 것입니다.
2. event.preventDefault();
1번의 문제점의 연장선 입니다. 브라우저의 기본 이벤트를 막는 preventDefault(); 가 선언되어 있지 않는 다면 레이어 함수 호출 후
화면이 상단으로 휙~ 올라 갈 것입니다.
* 참고 1
href="#" 이 붙으면 event.preventDefault(); 가 무조건 선언이 되어야 하는데 만약 이게 싫으시다면
<a href="javascript:void(0);" class="btn">
으로 코딩하시면 모든 문제 해결과 함께 event.preventDefault(); 선언도 생략 가능하다는 것을 말씀드리고 싶네요!
* 참고 2
href="#" 은 hash 기호로써 해당 #의 뒤에 오는 문자열의 id 를 찾아가기 위해 많이 사용되며
javascript:void(0); 은 스크립트로 의미없는 함수 void(0); 을 undefined 값을 뽑아내어 해당 링크를 정상적으로 수행하지 못하게 하는 기능을 합니다.
void(0); 을 콘솔에 입력해 보시면 undefined 값을 보실 수 있겠습니다. (void(1), void(2) 마음에 드시는 걸로 뭐 아무거나..)
* 참고 3
만약 <a href="#" onclick="openLayer();"> 형식으로 onclick 을 사용하셨다면 openLayer() 함수 안에서는 window.event.ctrlKey, window.event.shiftKey 등으로 키 코드를 찾으시면 되겠습니다.
그럼 글 마무리 하도록 하겠습니다!
'프로그래밍' 카테고리의 다른 글
jQuery Mobile (0) | 2017.09.19 |
---|---|
Convert HTML to Image (HTML 을 이미지로 변환하여 다운로드하기) (0) | 2017.09.13 |
간단메모!! (0) | 2017.08.08 |
자바 기초 개념 (0) | 2017.08.02 |
Windows 7 에 Redis Desktop Manager 설치하기 (0) | 2017.07.29 |
- Total
- Today
- Yesterday
- Namibia
- 볼리비아
- jQuery
- 애드센스
- 성스러운 계곡
- 캄보디아
- 나미비아
- aguas calientes
- Cambodia
- 족발
- 칼라마
- 빈트후크
- Uyuni
- 남미
- 아구아스 칼리엔테스
- calama
- 남미 저가항공
- 우유니
- 마추피추
- 킹덤 호텔
- 푸에르토 나탈레스
- 빅토리아폴스
- 성계 투어
- 쿠스코
- 후마리
- Cusco
- 햄버거
- Oracle
- 칠레
- 토레스 델 파이네
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |