HTMLElement:dragleave 事件

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

dragleave 事件在拖动的元素或选中的文本离开一个有效的放置目标时被触发。

此事件不可取消。

语法

在类似 addEventListener() 这样的方法中使用事件名称,或设置事件处理器属性。

js
addEventListener("dragleave", (event) => {});

ondragleave = (event) => {};

事件类型

事件属性

除了下面列出的属性外,还可以使用父接口 Event 的属性。

DragEvent.dataTransfer 只读

在进行拖放操作时,传输的数据。

示例

在 dragleave 时重置拖放区域的样式

在此示例中,我们在容器内有一个可拖动元素。尝试抓住这个元素,将其拖到另一个容器中,然后释放它。

在可拖动元素被拖到另一个容器上方时,我们将容器的背景设置为紫色,以表示这个可拖动元素可以被放置到该容器中。我们会监听 dragleave 事件,以在可拖动元素离开容器时重置容器的背景。

请注意,我们没有在这个示例中实现元素的放置:完整的拖放示例,请参见 drag 事件。

HTML

html
<div class="dropzone">
  <div id="draggable" draggable="true">这个 div 可以拖动</div>
</div>
<div class="dropzone" id="droptarget"></div>

CSS

css
body {
  /* Prevent the user selecting text in the example */
  user-select: none;
}

#draggable {
  text-align: center;
  background: white;
}

.dropzone {
  width: 200px;
  height: 20px;
  background: blueviolet;
  margin: 10px;
  padding: 10px;
}

.dropzone.dragover {
  background-color: purple;
}

JavaScript

js
const target = document.getElementById("droptarget");
target.addEventListener("dragenter", (event) => {
  // highlight potential drop target when the draggable element enters it
  if (event.target.classList.contains("dropzone")) {
    event.target.classList.add("dragover");
  }
});

target.addEventListener("dragleave", (event) => {
  // reset background of potential drop target when the draggable element leaves it
  if (event.target.classList.contains("dropzone")) {
    event.target.classList.remove("dragover");
  }
});

结果

规范

Specification
HTML Standard
# ix-handler-ondragleave
HTML Standard
# event-dnd-dragleave

浏览器兼容性

BCD tables only load in the browser

参见