Sự kiện ondragend

Định nghĩa và cách sử dụng

Khi người dùng hoàn thành việc kéo thả phần tử hoặc văn bản đã chọn, sự kiện ondragend sẽ xảy ra.

Kéo thả là một tính năng rất phổ biến trong HTML5. Đó là khi bạn "cầm" một đối tượng và kéo nó đến vị trí khác. Để học thêm, hãy đọc chúng tôi về Truyền tải HTML5Giáo trình HTML của chúng tôi.

Chú thích:Để làm cho phần tử có thể kéo thả, hãy sử dụng toàn cục Thuộc tính draggable của HTML5

Lưu ý:Mặc định, liên kết và hình ảnh là có thể kéo thả, không cần thuộc tính draggable.

Trong các giai đoạn khác nhau của hoạt động kéo thả, có rất nhiều sự kiện được sử dụng và có thể xảy ra:

Các sự kiện được kích hoạt trên mục tiêu kéo thả (phần tử nguồn):

  • ondragstart - Khi người dùng bắt đầu kéo thả phần tử
  • ondrag - Khi phần tử bị kéo thả
  • ondragend - Khi người dùng hoàn thành việc kéo thả phần tử

Các sự kiện được kích hoạt trên mục tiêu đặt:

  • ondragenter - Khi phần tử đang được kéo thả vào mục tiêu đặt
  • ondragover - Khi phần tử đang được kéo thả trên mục tiêu đặt
  • ondragleave - Khi phần tử đang được kéo thả rời khỏi mục tiêu đặt
  • ondrop - Khi phần tử đang được kéo thả được đặt trên mục tiêu đặt

Ví dụ

Khi người dùng hoàn thành việc kéo thả <p> phần tử, sẽ thực thi JavaScript:

<p draggable="true" ondragend="myFunction(event)">Đ引きずって!</p>

Thử ngay

Trang web có nhiều ví dụ TIY hơn ở dưới cùng.

Cú pháp

Trong HTML:

<element ondragend="myScript">

Thử ngay

Trong JavaScript:

object.ondragend = function(){myScript};

Thử ngay

Trong JavaScript, sử dụng phương thức addEventListener():

object.addEventListener("dragend", myScript);

Thử ngay

Chú thích:Internet Explorer 8 hoặc các phiên bản sớm hơn không hỗ trợ Phương thức addEventListener()

Chi tiết kỹ thuật

Bùng nổ: Hỗ trợ
Có thể hủy bỏ: Không hỗ trợ
Loại sự kiện: DragEvent
Thẻ HTML được hỗ trợ: Tất cả các phần tử HTML
Phiên bản DOM: Level 3 Events

Hỗ trợ trình duyệt

Số trong bảng chỉ ra phiên bản trình duyệt đầu tiên hỗ trợ sự kiện này hoàn toàn.

Sự kiện Chrome IE Firefox Safari Opera
ondragend 4.0 9.0 3.5 6.0 12.0

Các ví dụ thêm

Dự示范 hình cho các sự kiện kéo thả có thể xảy ra:

<p draggable="true" id="dragtarget">Kéo tôi!</p>
<div class="droptarget">Đặt vào đây!</div>
<script>
/* ----------------- Các sự kiện được kích hoạt trên mục tiêu kéo thả ----------------- */
document.addEventListener("dragstart", function(event) {
  // Phương thức dataTransfer.setData() đặt loại dữ liệu và giá trị của dữ liệu bị kéo thả
  event.dataTransfer.setData("Text", event.target.id);
  // Khi bắt đầu kéo thả phần tử p, hiển thị một số văn bản
  document.getElementById("demo").innerHTML = "Bắt đầu kéo thả phần tử p.";
  // Thay đổi độ mờ của phần tử có thể kéo thả
  event.target.style.opacity = "0.4";
});
// Khi kéo thả phần tử p, thay đổi màu sắc của văn bản đầu ra
document.addEventListener("drag", function(event) {
  document.getElementById("demo").style.color = "red";
});
// Sau khi hoàn thành kéo thả phần tử p, hiển thị một số văn bản và đặt lại độ mờ
document.addEventListener("dragend", function(event) {
  document.getElementById("demo").innerHTML = "Hoàn thành việc kéo thả phần tử p.";
  event.target.style.opacity = "1";
});
/* ----------------- Các sự kiện được kích hoạt trên mục tiêu đặt ----------------- */
// Khi phần tử kéo thả p vào droptarget, thay đổi樣式 viền của DIV
document.addEventListener("dragenter", function(event) {
  if ( event.target.className == "droptarget" ) {
    event.target.style.border = "3px dotted red";
  }
});
// Mặc định, không thể đặt dữ liệu/element vào các phần tử khác. Để cho phép đặt, chúng ta phải ngăn chặn xử lý mặc định của phần tử
document.addEventListener("dragover", function(event) {
  event.preventDefault();
});
// Khi phần tử kéo thả p rời droptarget, đặt lại樣式 viền của DIV
document.addEventListener("dragleave", function(event) {
  if ( event.target.className == "droptarget" ) {
    event.target.style.border = "";
  }
});
/* Khi rơi - Ngăn chặn xử lý mặc định của trình duyệt đối với dữ liệu (mặc định mở liên kết khi đặt) */
Đặt lại màu chữ và màu viền của DIV
Lấy dữ liệu kéo thả bằng phương thức dataTransfer.getData()
Dữ liệu kéo thả là ID của phần tử kéo thả ("drag1")
Chèn phần tử kéo thả vào phần tử đặt
*/
document.addEventListener("drop", function(event) {
  event.preventDefault();
  if ( event.target.className == "droptarget" ) {
    document.getElementById("demo").style.color = "";
    event.target.style.border = "";
    var data = event.dataTransfer.getData("Text");
    event.target.appendChild(document.getElementById(data));
  }
});
</script>

Thử ngay

Các trang liên quan

HTML Hướng dẫn: Trải nghiệm kéo thả HTML5

HTML Tài liệu tham khảo: Thuộc tính draggable của HTML