HTML DOM DragEvent는 선택한 텍스트를 드래그 앤 드롭할 때마다 실행되는 이벤트 유형입니다. 이 이벤트는 HTML5에서 도입되었습니다.
속성
다음은 HTML DOM DragEvent의 속성입니다 -
| 속성 | 설명 |
|---|---|
| 데이터 전송 | 사용자가 끌어다 놓는 데이터를 반환합니다. |
구문
다음은 DragEvent −
의 구문입니다.Object.DragEventType= function_name;
여기서 function_name은 실행 중인 이벤트에서 실행하고자 하는 함수입니다.
이벤트
다음은 DragEvent 객체에 속하는 이벤트 유형입니다 -
| 이벤트 | 설명 |
|---|---|
| 온드래그 | 요소를 드래그할 때 발생합니다. |
| 온드라젠드 | 사용자가 요소 드래그를 완료하면 발생합니다. |
| 온드라젠터 | 요소가 드래그된 후 놓기 대상에 들어갈 때 발생합니다. |
| ondragleave | 요소가 드래그되는 동안 놓기 대상을 벗어날 때 발생합니다. |
| 드래그오버 | 요소가 드래그되는 동안 놓기 대상 위에 있을 때 발생합니다. |
| ondragstart | 사용자가 요소를 끌기 시작할 때 발생합니다. |
| 온드롭 | 요소를 드래그한 후 놓기 대상에 놓을 때 발생합니다. |
예시
<!DOCTYPE html>
<html>
<head>
<style>
.DivDrop {
float: left;
width: 100px;
height: 40px;
margin:10px;
border: 1px solid blue;
background-color:lightgreen;
font-weight:bold;
}
</style>
</head>
<body>
<h2>DragEvent example</h2>
<div class="DivDrop">
<span id="spanDrag" draggable="true">Drag This!</p>
</div>
<div class="DivDrop"></div>
<p id="Sample" style="clear:both"></p>
<script>
document.ondragstart = function(event) {
event.dataTransfer.setData("Text", "spanDrag");
document.getElementById("spanDrag").innerText="drag Text";
document.getElementById("spanDrag").style.backgroundColor="lightgreen";
};
document.ondrag = function(event) {
document.getElementById("Sample").innerHTML = "Span element is being dragged";
};
document.ondragover = function(event) {
event.preventDefault();
};
document.ondrop = function(event) {
event.preventDefault();
if(event.target.className=="DivDrop"){
var txt = event.dataTransfer.getData("Text");
event.target.appendChild(document.getElementById(txt));
document.getElementById(txt).innerText="Dragged Text";
document.getElementById(txt).style.backgroundColor="lightyellow";
document.getElementById("Sample").innerHTML = "The span element is dropped";
}
};
</script>
</body>
</html> 출력
이것은 다음과 같은 출력을 생성합니다 -

드래그할 때 "Drag This!" Text. "텍스트 드래그"로 변경됩니다.

두 번째 div에 "drag Text" 드롭 시 -

위의 예에서 -
먼저 "DivDrop"이라는 동일한 클래스 이름을 가진 두 개의 div 요소를 만들었습니다. 이 요소를 사용하면 둘 모두에 대해 공통 CSS 스타일을 사용할 수 있습니다. 첫 번째
.DivDrop {
float: left;
width: 100px;
height: 40px;
margin:10px;
border: 1px solid blue;
background-color:lightgreen;
font-weight:bold;
}
<div class="DivDrop">
<span id="spanDrag" draggable="true">Drag This!</p>
</div>
<div class="DivDrop"></div>
그런 다음 이벤트가 발생할 때 실행할 여러 함수를 만들었습니다. 첫 번째 함수는 ondragstart 이벤트와 연결됩니다. 이 이벤트는 사용자가 텍스트를 드래그하기 시작할 때 발생합니다. 이 함수에는 드래그 데이터 유형과 데이터를 받는 setData() 메서드가 포함되어 있습니다. 여기서 유형은 "텍스트"이고 데이터는 요소 ID입니다.
태그와 연결된 ID를 찾으려면 event.target.id를 사용해야 합니다. 여기서는 단순함을 위해 이름을 사용했습니다 -
ondrag 이벤트와 관련된 함수는 ID를 가져온 후 innerHTML 속성을 사용하여
요소 텍스트를 "Span 요소가 드래그되고 있습니다"로 설정합니다. ondrag 이벤트는 사용자가 텍스트를 드래그할 때 발생합니다 -
ondragover 이벤트와 관련된 함수는 event.preventDefault() 메서드를 사용하여 dragover에서 발생할 기본 동작을 중지합니다. dragover 이벤트는 드래그되는 요소가 의도한 대상 위에 있을 때 주기적으로 발생합니다. -
ondrop 이벤트와 관련된 기능은 기본 작업이 발생하지 않도록 합니다. 그런 다음 의도한 대상이 두 번째
그런 다음 getData() 메서드를 사용하여 "텍스트" 유형에 대한 드래그 데이터를 가져옵니다. 이 요소는 우리의 경우 이고 두 번째 div의 자식으로 요소를 추가하고 변경 사항을 반영하기 위해 내부 텍스트, 배경색을 변경합니다 -document.ondragstart = function(event) {
event.dataTransfer.setData("Text", "spanDrag");
document.getElementById("spanDrag").innerText="drag Text";
document.getElementById("spanDrag").style.backgroundColor="lightgreen";
}; Document.ondrag = function(event) {
document.getElementById("Sample").innerHTML = "Span element is being dragged";
}; document.ondragover = function(event) {
event.preventDefault();
}; document.ondrop = function(event) {
event.preventDefault();
if(event.target.className=="DivDrop"){
var txt = event.dataTransfer.getData("Text");
event.target.appendChild(document.getElementById(txt));
document.getElementById(txt).innerText="Dragged Text";
document.getElementById(txt).style.backgroundColor="lightyellow";
document.getElementById("Sample").innerHTML = "The span element is dropped";
}