--- title: DataTransfer.clearData() slug: Web/API/DataTransfer/clearData translation_of: Web/API/DataTransfer/clearData browser-compat: api.DataTransfer.clearData --- {{APIRef("HTML Drag and Drop API")}} La méthode **`DataTransfer.clearData()`** retire les données du type indiqué de l'opération de glisser-déposer. S'il n'existe pas de données pour le type indiqué, cette méthode n'a aucun effet. Si cette méthode est appelée sans argument ou que le format est une chaîne de caractères [`DOMString`](/fr/docs/Web/API/DOMString) vide, la suppression des données concernera tous les types. Cette méthode _ne retire pas_ les fichiers de l'opération de glisser-déposer et il est donc possible d'avoir un élément restant avec le type `Files` dans la liste [`DataTransfer.types`](/fr/docs/Web/API/DataTransfer/types) si des fichiers font partie du glisser-déposer. > **Note :** Cette méthode peut uniquement être utilisée dans le gestionnaire d'évènement pour [`dragstart`](/fr/docs/Web/API/Document/dragstart_event), car c'est le seul moment où le magasin de données pour l'opération de glisser-déposer est accessible en écriture. ## Syntaxe ```js DataTransfer.clearData([format]); ``` ### Paramètres - `format` {{optional_inline}} - : Une chaîne de caractères [`DOMString`](/fr/docs/Web/API/DOMString) qui indique le type de données à retirer. Si ce paramètre est une chaîne vide ou qu'il n'est pas fourni, les données pour l'ensemble des types seront retirées. ## Exemple Cet exemple illustre l'utilisation des méthodes [`getData()`](/fr/docs/Web/API/DataTransfer/getData), [`setData()`](/fr/docs/Web/API/DataTransfer/setData) et `clearData()` de l'objet [`DataTransfer`](/fr/docs/Web/API/DataTransfer). ### HTML ```html Sélectionnez cet élément, glissez-le dans la zone de dépôt puis relâcher la sélection pour déplacer l'élément. Zone de dépôt
État : Glisser pour démarrer
Données : non-initialisée
``` ### CSS ```css span.tweaked { display: inline-block; margin: 1em 0; padding: 1em 2em; } #source { color: blue; border: 1px solid black; } #target { border: 1px solid black; } ``` ### JavaScript ```js window.addEventListener('DOMContentLoaded', function () { // On sélectionne les éléments HTML let draggable = document.getElementById('source'); let droppable = document.getElementById('target'); let status = document.getElementById('status'); let data = document.getElementById('data'); let dropped = false; // On enregistre les gestionnaires d'évènements draggable.addEventListener('dragstart', dragStartHandler); draggable.addEventListener('dragend', dragEndHandler); droppable.addEventListener('dragover', dragOverHandler); droppable.addEventListener('dragleave', dragLeaveHandler); droppable.addEventListener('drop', dropHandler); function dragStartHandler (event) { status.textContent = 'Glisser-déposer en cours'; // On change la bordure de l'élément cible pour // indiquer que le glisser-déposer a démarré event.currentTarget.style.border = '1px dashed blue'; // On commence par nettoyer les presse-papiers // existants. Cela porte sur tous les types vu qu'on // ne passe pas de type en argument. event.dataTransfer.clearData(); // On définit le format et les données pour l'opération // on utilise l'identifiant de la cible d'évènement comme // donnée event.dataTransfer.setData('text/plain', event.target.id); data.textContent = event.dataTransfer.getData('text/plain'); } function dragEndHandler (event) { if (!dropped) { status.textContent = 'Glisser-déposer annulé'; } data.textContent = event.dataTransfer.getData('text/plain') || 'vide'; // On change la bordure afin d'indiquer que le glisser- // déposer n'est plus en cours event.currentTarget.style.border = '1px solid black'; if (dropped) { // On retire les gestionnaires d'évènements draggable.removeEventListener('dragstart', dragStartHandler); draggable.removeEventListener('dragend', dragEndHandler); droppable.removeEventListener('dragover', dragOverHandler); droppable.removeEventListener('dragleave', dragLeaveHandler); droppable.removeEventListener('drop', dropHandler); } } function dragOverHandler (event) { status.textContent = 'Dépôt disponible'; event.preventDefault(); } function dragLeaveHandler (event) { status.textContent = 'Glisser-déposer en cours (le dépôt était disponible)'; event.preventDefault(); } function dropHandler (event) { dropped = true; status.textContent = 'Dépôt effectué'; event.preventDefault(); // On récupère les données liées à l'évènement // et qui sont au format « text » let _data = event.dataTransfer.getData('text/plain'); let element = document.getElementById(_data); // On ajoute l'élément source glissé à l'élément qui // est la cible de l'évènement event.target.appendChild(element); // On modifie les styles CSS et le texte affiché element.style.cssText = 'border: 1px solid black;display: block; color: red'; element.textContent = 'Je suis dans la zone de dépôt !'; } }) ``` ### Résultat {{EmbedLiveSample('', 300, 280)}} ## Spécifications {{Specifications}} ## Compatibilité des navigateurs {{Compat}} ## Voir aussi - [L'API Drag and drop pour le glisser-déposer](/fr/docs/Web/API/HTML_Drag_and_Drop_API) - [Les opérations de glisser-déposer](/fr/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations) - [Types de données pour le glisser-déposer](/fr/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types) - [Glisser-déposer plusieurs objets](/fr/docs/Web/API/HTML_Drag_and_Drop_API/Multiple_items) - [Test `DataTransfer` — Coller ou glisser ?](https://codepen.io/tech_query/pen/MqGgap)