Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

DataTransfer: types-Eigenschaft

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.

Die schreibgeschützte types-Eigenschaft des DataTransfer-Interfaces gibt die verfügbaren Typen zurück, die in den items vorhanden sind.

Während eines Ziehvorgangs kann diese Eigenschaft in jedem Ziehereignis-Handler gelesen werden, selbst wenn der Ziehdaten-Speicher im geschützten Modus ist. Die verfügbaren Formate bleiben zugänglich, aber die Daten selbst können nur in den Handlern für die dragstart- und drop-Ereignisse gelesen werden. Siehe Lesen des Ziehdaten-Speichers für Details.

Wert

Ein Array der Datenformate. Jedes Format ist ein String, der im Allgemeinen ein MIME-Typ wie text/plain oder text/html ist. Wenn die Ziehoperation keine Daten einschließt, wird diese Liste leer sein. Wenn irgendwelche Dateien in die Ziehoperation einbezogen sind, wird einer der Typen der String Files sein.

Beispiele

Dieses Beispiel zeigt die Verwendung der types- und items-Eigenschaften.

html
<ul>
  <li id="i1" draggable="true">Drag Item 1 to the Drop Zone</li>
  <li id="i2" draggable="true">Drag Item 2 to the Drop Zone</li>
</ul>
<div id="target">Drop Zone</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}`);

  // Add this element's id to the drag payload so the drop handler will
  // know which element to add to its tree
  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();

  // Get the id of the target and add the moved element to the target's DOM
  const data = ev.dataTransfer.getData("text");
  ev.target.appendChild(document.getElementById(data));

  // Print each format type
  for (let i = 0; i < ev.dataTransfer.types.length; i++) {
    log(`… types[${i}] = ${ev.dataTransfer.types[i]}`);
  }

  // Print each item's "kind" and "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";
});

Spezifikationen

Spezifikation
HTML
# dom-datatransfer-types-dev

Browser-Kompatibilität

Siehe auch