HTML DOM DragEvent เป็นเหตุการณ์ประเภทหนึ่งที่ได้รับการดำเนินการเมื่อใดก็ตามที่มีการลากและวางข้อความที่เลือก เหตุการณ์นี้ถูกนำมาใช้ใน HTML5
คุณสมบัติ
ต่อไปนี้เป็นคุณสมบัติของ HTML DOM DragEvent -
คุณสมบัติ | คำอธิบาย |
---|---|
การถ่ายโอนข้อมูล | เพื่อส่งคืนข้อมูลที่ผู้ใช้ลากหรือวาง |
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์สำหรับ DragEvent -
Object.DragEventType= function_name;
ในที่นี้ function_name คือฟังก์ชันที่เราต้องการให้ดำเนินการกับเหตุการณ์ที่กำลังดำเนินการ
เหตุการณ์
ต่อไปนี้เป็นประเภทเหตุการณ์ที่เป็นของวัตถุ DragEvent -
เหตุการณ์ | คำอธิบาย |
---|---|
ออนแดรก | เกิดขึ้นเมื่อองค์ประกอบถูกลาก |
ออนดราเจนด์ | เกิดขึ้นเมื่อผู้ใช้ลากองค์ประกอบเสร็จแล้ว |
ondragenter | เกิดขึ้นเมื่อองค์ประกอบเข้าสู่เป้าหมายการวางหลังจากถูกลาก |
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>
ผลลัพธ์
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
ในการลาก “ลากสิ่งนี้!” Text.It จะเปลี่ยนเป็น “drag Text”
เมื่อวาง "ลากข้อความ" ใน div ที่สอง -
ในตัวอย่างข้างต้น −
ขั้นแรกเราได้สร้างองค์ประกอบ div สองรายการที่มีชื่อคลาสเดียวกันว่า "DivDrop" ซึ่งจะช่วยให้เราใช้รูปแบบ 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() ที่ใช้ลากประเภทข้อมูลและข้อมูล ประเภทคือ "ข้อความ" และข้อมูลคือรหัสองค์ประกอบ คุณควรใช้ event.target.id เพื่อค้นหา id ที่เชื่อมโยงกับแท็ก
เราใช้ชื่อนี้เพื่อความเรียบง่าย -
ฟังก์ชันที่เกี่ยวข้องกับเหตุการณ์ ondrag ตั้งค่าข้อความองค์ประกอบ
เป็น "กำลังลากองค์ประกอบช่วง" โดยใช้คุณสมบัติ innerHTML หลังจากได้รับรหัส เหตุการณ์ 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";
}