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

View in English Always switch to English

DataTransfer: types プロパティ

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

DataTransfer.types は読み取り専用プロパティで、 items に存在する利用可能な型を返します。

ドラッグ操作で使用されるデータ形式の配列。 それぞれの形式は文字列であり、一般的には text/plaintext/html などの MIME タイプです。 ドラッグ操作にデータが含まれていない場合、このリストは空になります。 ドラッグ操作にファイルが含まれている場合は、その型の 1 つが文字列 Files になります。

この例では、typesitems プロパティを使用しています。

html
<ul>
  <li id="i1" draggable="true">アイテム 1 をドロップゾーンにドラッグ</li>
  <li id="i2" draggable="true">アイテム 2 をドロップゾーンにドラッグ</li>
</ul>
<div id="target">ドロップゾーン</div>
<pre id="output"></pre>
css
div {
  margin: 0em;
  padding: 2em;
}
#target {
  border: 1px solid black;
}
js
const output = document.getElementById("output");
function log(msg) {
  output.textContent += `${msg}\n`;
}

document.querySelectorAll("li").forEach((item) => {
  item.addEventListener("dragstart", dragstartHandler);
});

function dragstartHandler(ev) {
  log(`dragStart: target.id = ${ev.target.id}`);

  // ドラッグ内容にこの要素の ID を追加し、ドロップハンドラーがどの要素を
  // ツリーに追加すればよいかを知ることができるようにする
  ev.dataTransfer.setData("text/plain", ev.target.id);
  ev.dataTransfer.effectAllowed = "move";
}

const target = document.getElementById("target");

target.addEventListener("drop", (ev) => {
  log(`drop: target.id = ${ev.target.id}`);
  ev.preventDefault();

  // ターゲットの ID を取得し、移動した要素をターゲットの DOM に追加します。
  const data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));

  // それぞれの形式を表示
  for (let i = 0; i < ev.dataTransfer.types.length; i++) {
    log(`… types[${i}] = ${ev.dataTransfer.types[i]}`);
  }

  // それぞれの項目の "kind" と "type" を表示する
  for (let i = 0; i < ev.dataTransfer.items.length; i++) {
    log(
      `… items[${i}].kind = ${ev.dataTransfer.items[i].kind}; type = ${ev.dataTransfer.items[i].type}`,
    );
  }
});

target.addEventListener("dragover", (ev) => {
  ev.preventDefault();
  ev.dataTransfer.dropEffect = "move";
});

仕様書

Specification
HTML
# dom-datatransfer-types-dev

ブラウザーの互換性

関連情報