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.
Please take two minutes to fill out our short survey.
dragover
イベントは、要素または選択されたテキストが、妥当なドロップターゲットの上にあるときに(数百ミリ秒間隔で)発生します。
このイベントはキャンセル可能で、Document
オブジェクトと Window
オブジェクトまでバブルアップする可能性があります。
構文
このイベント名を addEventListener()
のようなメソッドで使用するか、イベントハンドラープロパティを設定するかします。
js
addEventListener("dragover", (event) => {});
ondragover = (event) => {};
イベント型
イベントプロパティ
以下に挙げたプロパティに加えて、親である 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 |