1. 開発者向けのウェブ技術
  2. Web API
  3. DataTransfer
  4. items

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

DataTransfer: items プロパティ

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2018年4月以降、すべてのブラウザーで利用可能です。

itemsDataTransfer インターフェイスの読み取り専用プロパティで、ドラッグ操作でのデータ転送項目リストです。リストには操作中のアイテムごとに 1 つの項目が含まれており、操作にアイテムがなかった場合はリストは空になります。

ドラッグ操作でドラッグされるアイテムを表す DataTransferItem オブジェクトを含む DataTransferItemList オブジェクトで、ドラッグされるオブジェクトごとに 1 つのリスト項目があります。ドラッグ操作にデータがない場合、リストは空になります。

ドラッグされた項目の記録

この例では、items を使って、ドラッグした項目の情報を記録します。

HTML

html
<ul>
 <li id="source1" draggable="true">アイテム 1 をドロップゾーンにドラッグ</li>
 <li id="source2" draggable="true">アイテム 2 をドロップゾーンにドラッグ</li>
</ul>
<div id="target">ドロップゾーン</div>
<button id="reset">リセット</button>

CSS

css
div {
 margin: 0em;
 padding: 2em;
}
#target {
 border: 1px solid black;
}

JavaScript

js
function dragstartHandler(ev) {
 console.log(`dragstart: target.id = ${ev.target.id}`);
 // この要素の ID をドラッグの内容に追加し、ドロップハンドラーがどの
 // 要素をツリーに追加すればよいかを知ることができるようにします。
 ev.dataTransfer.setData("text/plain", ev.target.id);
 ev.dataTransfer.effectAllowed = "move";
}
function dropHandler(ev) {
 ev.preventDefault();
 // ターゲットの ID を取得し、移動した要素をターゲットの DOM に追加します
 const data = ev.dataTransfer.getData("text");
 ev.target.appendChild(document.getElementById(data));
 // 各項目の "kind" と "type" を表示する
 if (ev.dataTransfer.items) {
 for (const item of ev.dataTransfer.items) {
 console.log(`kind = ${item.kind}, type = ${item.type}`);
 }
 }
}
function dragoverHandler(ev) {
 ev.preventDefault();
 // dropEffect を move に設定する
 ev.dataTransfer.dropEffect = "move";
}
const source1 = document.querySelector("#source1");
const source2 = document.querySelector("#source2");
const target = document.querySelector("#target");
source1.addEventListener("dragstart", dragstartHandler);
source2.addEventListener("dragstart", dragstartHandler);
target.addEventListener("dragover", dragoverHandler);
target.addEventListener("drop", dropHandler);
const reset = document.querySelector("#reset");
reset.addEventListener("click", () => document.location.reload());

結果

仕様書

仕様書
HTML
# dom-datatransfer-items-dev

ブラウザーの互換性

関連情報

MDN の改良に協力

協力方法を知る

このページは MDN の貢献者によって に最終更新されました。

AltStyle によって変換されたページ (->オリジナル) /