반응형



[ 자바스크립트. JavaScript ] 이벤트(Event) 핸들러 간단예제, 이벤트(Event) 객체를 알아보자



1. 이벤트 핸들러와 예제


 이벤트 핸들러(처리기)는 이벤트 핸들러를 사용하고자 하는 곳에서 하나의 속성으로 사용이 된다. 






1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
 
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>자바스크립트 이벤트 핸들러</title>
    </head>
    <body onload="alert('안녕하세요..')" onunload="alert('안녕히가세요')">
        <h1>자바스크립트<p>열심히 공부하자!</h1>
    </body>
</html>
 
cs




▲ 실행 초기 화면





▲ 다시 읽을 때의 화면





1. 이벤트(event) 객체


 event 객체는 이벤트에 대한 모든 정보를 제공해주는데 넷스케이프 4.0이 출시되면서 생겨난 객체이다. event 객체는 이벤트의 종류, 이벤트가 전달될 객체 이벤트 발생 위치등을 가지고 있다.

 더 자세하게 이벤트 객체를 알아보자!



 속성

 기능

type 

이벤트 종류에 대해 지정해준다. 

target 

이벤트가 전달되는 객체를 지정해준다. 

layerX 

layer를 기준으로 이벤트가 발생하는 위치의 x좌표를 지정한다. 

layerY 

layer를 기준으로 이벤트가 발생하는 위치의 y좌표를 지정한다. 

pageX

문서의 쪽을 기준으로 이벤트가 발생하는 위치의 x좌표를 지정한다. 

pageY 

 문서의 쪽을 기준으로 이벤트가 발생하는 위치의 y좌표를 지정한다.

 screenX

 디스플레이의 화면을 기준으로 이벤트가 발생하는 위치의 x좌표를 지정한다.

 screenY

 디스플레이의 화면을 기준으로 이벤트가 발생하는 위치의 y좌표를 지정한다.




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
 
<!DOCTYPE html>
 
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>자바스크립트 이벤트 객체</title>
    </head>
    <script language="JavaScript">
        function mouseDownEvent(e) {
            document.write("이벤트의 type: " + e.type);
            if (e.which == 1) {
                document.write("마우스 왼쪽 버튼" + "<br>")
            }
            else if (e.which == 3) {
                document.write("마우스 오른쪽 버튼" + "<br>")
            }
            document.write("페이지의 이벤트 발생 위치: (" + e.pageX + "," + e.pageY + ")")
            document.write("화면의 이벤트 발생 위치: (" + e.screentX + "," + e.screenY + ")")
            document.write("<br");
            return true;
        }
        //마우스 버튼을 눌렀을 때 mouseDownEvent 함수 호출..
        document.onmousedown = mouseDownEvent;
    </script>
    <body>
    </body>
</html>
 
cs




▲ 제가 사용하는 스윙브라우저와 인터넷익스플로러11은 지원이 안되는듯한... 그래서 크롬으로 돌렸더니 잘 뜨네요.







3. Event 잡아채기


 event 잡아채기 기능은 넷스케이프 4.0이 출시되면서 새롭게 등장한 기능으로 이벤트를 잡아채면 대상이 되는 객체에 이벤트가 전달되기 때문에 이벤트를 쉽게 처리할 수 있다. 예를 들어 길을 html로 가야하는데 자바 스크립트로 강제로 데리고 올 수 있는것이다.


이벤트를 잡아채기 위한 메소드와 기능은 다음과 같다.



 메소드

기능 

captureEvents 

 웹 페이지에서 발생할 수 있는 이벤트 중에서 잡아채울 이벤트를 지정해준다. 

releaseEvents 

 captureEvents로 잡아챈 이벤트를 해제해준다. 

routeEvent 

 잡아챈 이벤트를 처리할 때 사용하며, 잡아챈 이벤트를 처리할 이벤트 처리기가 있는 경우 해당 이벤트 처리기에 전달하게 된다. 

 handleEvent

 잡아챈 이벤트를 이벤트 핸들러로 전달해준다. 




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
 
<!DOCTYPE html>
 
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>자바스크립트 captureEvent 메소드</title>
    </head>
    <script language="JavaScript">
        function clickEvent(e) {
            alert("잡아챈 이벤트");
            return routeEvent(e);
        }
        //마우스 클릭 이벤트 핸들러 잡아채기
 
        document.captureEvents(Event.CLICK);
        //마우스 버튼을 클릭했을 때 clickEvent 이벤트 핸들러 호출
 
        document.onclick = clickEvent;
        //자바 스크립트 종료
    </script>
    <body>
        <form>
            <input type="button" name="버튼1" value="첫번째 버튼입니다." onclick="alert('첫번째 버튼의 이벤트입니다.');return true;">
            <input type="button" name="버튼2" value="두번째 버튼입니다." onclick="alert('두번째 버튼의 이벤트입니다.');return true;">
        </form>
    </body>
</html>
 
cs







▲ 처음 시작시 이벤트 발생 → 첫번째 버튼 클릭시 화면, 두번째 버튼 클릭시 화면...

이 테스트도 크롬으로 시작하였음..











반응형
Posted by 제3인생자
l