การเลื่อนย้าย HTML5
- หน้าก่อนหน้า การตำแหน่งทางภูมิศาสตร์ HTML5
- หน้าต่อไป เก็บข้อมูล Web HTML5

กรุณาลากภาพ CodeW3C.com ไปที่วงกลม
ลากเลย
ลากเลย (Drag และ Drop) เป็นคุณสมบัติที่ติดตามตลอดเวลา。มันหมายถึงคุณสามารถจับเอาสิ่งหนึ่งและลากเข้าไปในตำแหน่งที่ต่างๆ。
ลากเลยเป็นส่วนหนึ่งของมาตราฐาน HTML5: องค์ประกอบใดก็ตามสามารถลากเลยได้。
การสนับสนุนโดยบราวเซอร์
ตัวเลขในตารางนี้ชี้ถึงเวอร์ชั่นบราวเซอร์ที่สนับสนุนลากเลยอย่างสมบูรณ์。
API | |||||
ลากเลย | 4.0 | 9.0 | 3.5 | 6.0 | 12.0 |
ตัวอย่าง HTML ลากเลย
ตัวอย่างง่ายๆ ของลากเลยต่อไปนี้:
ตัวอย่าง
<!DOCTYPE HTML> <html> <head> <script> function allowDrop(ev) { ev.preventDefault(); } function drag(ev) { ev.dataTransfer.setData("text", ev.target.id); } function drop(ev) { ev.preventDefault(); var data = ev.dataTransfer.getData("text"); ev.target.appendChild(document.getElementById(data)); } </script> </head> <body> <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div> <img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69"> </body> </html>
มันอาจดูซับซ้อนเล็กน้อย แต่เราจะศึกษาส่วนต่างๆ ของเหตุการณ์ลากเลยทั้งหมด。
ตั้งค่าองค์ประกอบเป็นสามารถลากเลย
สุดท้าย: เพื่อที่จะทำให้องค์ประกอบสามารถลากเลยได้ โปรดกำหนดค่าของตัวแปร draggable ให้เป็น true:
<img draggable="true">
เนื้อหาลากเลย - ondragstart และ setData()
หลังจากนั้น กำหนดสิ่งที่จะเกิดขึ้นเมื่อองค์ประกอบถูกลากเลย。
ในตัวอย่างที่ขึ้นไป ตัวแปร ondragstart โรงรับฟังก์ชัน drag(event) ที่กำหนดข้อมูลที่จะลากเลย。
วิธี setData() ของ dataTransfer กำหนดชนิดข้อมูลและค่าของข้อมูลที่ถูกลากเลย:
function drag(ev) { ev.dataTransfer.setData("text", ev.target.id); }
ในตัวอย่างนี้ ชนิดข้อมูลคือ "text" และค่าคือ id ขององค์ประกอบที่สามารถลากเลย ("drag1")。
ที่ไหนจะลากไป - ondragover
สัญญาณ ondragover กำหนดที่ที่ข้อมูลที่ถูกลากสามารถทำการทำการลงทะเบียนได้
โดยมาตรฐาน ข้อมูล/องค์ประกอบไม่สามารถทำการทำการลงทะเบียนในองค์ประกอบอื่น โดยเพื่อที่จะทำการลากและปล่อย พวกเราต้องหยุดการประมวลผลโดยมาตรฐานขององค์ประกอบนี้
งานนี้ทำโดยวิธี event.preventDefault() ของสัญญาณ ondragover
event.preventDefault()
ทำการทำการลงทะเบียน - ondrop
ขณะที่ปล่อยข้อมูลที่ถูกลาก เกิดสัญญาณ drop
ในตัวอย่างที่ขึ้นมา คุณเรียกใช้ ondrop โดยเรียกฟังก์ชัน drop(event):
function drop(ev) { ev.preventDefault(); var data = ev.dataTransfer.getData("text"); ev.target.appendChild(document.getElementById(data)); }
การอธิบายรหัส:
- เรียก preventDefault() เพื่อป้องกันการประมวลผลของบราวเซอร์โดยมาตรฐาน (การประมวลผลโดยมาตรฐานของสัญญาณ drop คือการเปิดในรูปแบบลิงก์)
- ได้รับข้อมูลที่ถูกลากผ่านทางวิธี dataTransfer.getData() ซึ่งจะกลับมาเป็นข้อมูลที่เหมือนกันกับที่กำหนดไว้ในวิธี setData()
- ข้อมูลที่ถูกลากเข้ามาคือ id ขององค์ประกอบที่ถูกลาก ("drag1")
- ใส่องค์ประกอบที่ถูกลากเข้าไปในองค์ประกอบที่ถูกทำการลงทะเบียน
ตัวอย่างเพิ่มเติม
ลากภาพเข้าไป
ฉันทำไมไม่สามารถลากภาพในระหว่างองค์ประกอบ <div> ทั้งสองอย่างได้:
กรุณาลากภาพ CodeW3C.com ไปที่วงกลม
- หน้าก่อนหน้า การตำแหน่งทางภูมิศาสตร์ HTML5
- หน้าต่อไป เก็บข้อมูล Web HTML5