HTMLElement: dragover イベント

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.

dragover イベントは、要素または選択されたテキストが、妥当なドロップターゲットの上にあるときに(数百ミリ秒間隔で)発生します。

このイベントはキャンセル可能で、Document オブジェクトと Window オブジェクトまでバブルアップする可能性があります。

構文

このイベント名を addEventListener() のようなメソッドで使用するか、イベントハンドラープロパティを設定するかします。

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

ondragover = (event) => {};

イベント型

DragEvent です。 Event を継承しています。

Event UIEvent MouseEvent DragEvent

イベントプロパティ

以下に挙げたプロパティに加えて、親である Event から継承したプロパティもあります。

DragEvent.dataTransfer 読取専用

ドラッグ&ドロップ操作の間に転送されるデータです。

最小限のドラッグ&ドロップの例

この例では、コンテナーの中にドラッグ可能な要素を入れています。この要素を掴んで、他のコンテナーの上にドラッグし、そして放してみましょう。

ここでは、 3 つのイベントハンドラーを使用しています。

  • dragstart イベントハンドラーでは、ユーザーがドラッグした要素への参照を取得します。
  • ターゲットコンテナーの dragover イベント ハンドラーでは、 event.preventDefault() を呼び出し、drop イベントを受信できるようにします。
  • ドロップゾーンの drop イベント ハンドラーでは、ドラッグ可能な要素を元のコンテナーからドロップ ゾーンに移動する処理を行います。

ドラッグ&ドロップのより完全な例については、drag イベントのページを参照してください。

HTML

html
<div class="dropzone">
  <div id="draggable" draggable="true">この div はドラッグ可</div>
</div>
<div class="dropzone" id="droptarget"></div>

CSS

css
body {
  /* 例でユーザーがテキストを選択するのを防ぐ */
  user-select: none;
}

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

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

JavaScript

js
let dragged = null;

const source = document.getElementById("draggable");
source.addEventListener("dragstart", (event) => {
  // ドラッグ中の要素の参照を保存
  dragged = event.target;
});

const target = document.getElementById("droptarget");
target.addEventListener("dragover", (event) => {
  // ドロップできるように既定の動作を停止
  event.preventDefault();
});

target.addEventListener("drop", (event) => {
  // 既定の動作(一部の要素でリンクとして開く)を行わないようにする。
  event.preventDefault();
  // ドラッグした要素を選択されたドロップターゲットに移動する
  if (event.target.className === "dropzone") {
    dragged.parentNode.removeChild(dragged);
    event.target.appendChild(dragged);
  }
});

結果

仕様書

Specification
HTML
# ix-handler-ondragover
HTML
# event-dnd-dragover

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
dragover event

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報