- html5
- html5/VA
- html5/canvas
- html5/drag-and-drop
- html5/form
- html5/geolocation
- html5/offline-web-application
- html5/others-api
- html5/outline
- html5/overview
- html5/richtext-edit
- html5/video&audio
- html5/web-storage
- html5/web-workers
- html5/webSqlDatabase
- html5/websocket
- html5/문제점
- html5practice/roundRect
- html5practice/즐겨찾기목록만들기
1. 드래그 & 드롭 API ¶
- 기존 HTML에서는 mousedown, mouseover 등을 이용하여 드래그 & 드롭을 처리했다.
- HTML5에서는 드래그 & 드롭 API를 제공한다.
- 다른 애플리케이션과 데이터를 연계할 수 있다.
- 다른 애플리케이션과 데이터를 연계할 수 있다.
2. 이용 방법 ¶
- 드래그 대상을 지정
- draggable = 'true'
- draggable = 'true'
- 드래그 시작 이벤트 처리
- dragstart 이벤트 이용
- ondragstart
- DataTransfer 객체를 이용하여 드래그 대상과 드롭 대상 사이에 임의의 데이터를 주고받는다.
- dragstart 이벤트 이용
- 드롭 대상 요소에서 발생하는 이벤트를 적절히 처리
- 기본값 상태에서는 드롭을 허락하지 않는다.
- 드롭을 허용하려면 이벤트의 기본값 상태를 취소할 필요가 있다.
- event.preventDefault()
- event.preventDefault()
- 드롭을 허용하려면 이벤트의 기본값 상태를 취소할 필요가 있다.
- 다음 세 가지의 이벤트를 적절히 처리해야 한다.
- dragenter
- 드래그 중 마우스 포인터가 요소와 겹치는 순간 호출되는 이벤트이다.
- 드래그 중 마우스 포인터가 요소와 겹치는 순간 호출되는 이벤트이다.
- dragover
- 드래그 중 마우스 포인터가 요소 위를 가로지를때 단속적으로 발생하는 이벤트이다.
- 드래그 중 마우스 포인터가 요소 위를 가로지를때 단속적으로 발생하는 이벤트이다.
- drop
- 드롭 시 발생하는 이벤트이다.
- DataTransfer 객체로부터 데이터를 꺼내어 적절하게 처리하는 부분이다.
- 데이터를 꺼낼 때는 데이터 포맷 형식의 인수를 이용하여 getData()를 호출한다.
- 데이터를 꺼낼 때는 데이터 포맷 형식의 인수를 이용하여 getData()를 호출한다.
- Event Bubbling
- 처리를 끝낸 뒤 이벤트가 다른 욧에 전파되는 것을 막아야 한다.
- 이벤트 객체가 가진 stopPropagation() 메서드를 호출하여 막을 수 있다.
- 처리를 끝낸 뒤 이벤트가 다른 욧에 전파되는 것을 막아야 한다.
- 드롭 시 발생하는 이벤트이다.
- dragenter
- 기본값 상태에서는 드롭을 허락하지 않는다.
3. 이벤트 ¶
이벤트 | 이벤트를 알리는 곳 | 설명 |
dragstart | 드래그 대상 요소 | 드래그가 시작되었음 |
drag | 드래그 대상 요소 | 드래그 중 |
dragenter | 드래그 중 마우스 커서가 위치한 요소 | 드래그 조작이 요소 안의 범위에 들어옴 |
dragover | 드래그 중 마우스 커서가 위치한 요소 | 드래그 조작이 요소 안의 범위를 통과 중 |
dragleave | 드래그 중 마우스 커서가 위치한 요소 | 드래그 조작이 요소 안의 범위를 벗어남 |
drop | 드롭할 곳의 요소 | 드롭되었음 |
dragend | 드래그 대상 요소 | 드래그 종료 |
4. 속성과 메서드 ¶
속성/메서드 | 설명 |
dropEffect | 드래그 & 드롭 동작의 종류를 나타내는 문자열 |
effectAllowed | 허용할 dropEffect를 지정하는 문자열 |
types | setData()를 호출할 때 지정되는 포맷 문자열을 배열 형식으로 얻을 수 있다. |
clearData(type) | 드래그 중인 데이터를 삭제한다. |
setData(type, data) | 드래그 & 드롭할 데이터를 저장한다. |
getData(type) | 포맷을 지정하여 데이터를 가져온다. |
files | 다른 어플리케이션으로부터 드래그 & 드롭된 파일을 가져온다. |
setDragImage(image, x, y) | img 요소를 이용하여 드래그 중의 피드백을 지정한다. |
addElement(element) | 드래그 중 피드백 이미지에 추가할 요소를 지정한다. |