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";
}