1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
---
title: DataTransfer.clearData()
slug: Web/API/DataTransfer/clearData
tags:
- API
- DataTransfer
- HTML DOM
- Method
- Reference
- clearData
- drag and drop
translation_of: Web/API/DataTransfer/clearData
---
<div>{{APIRef("HTML Drag and Drop API")}}</div>
<p><strong><code>DataTransfer.clearData()</code></strong> メソッドは、指定されたタイプのドラッグ操作の {{domxref("DataTransfer", "ドラッグデータ")}} を削除します。指定された型のデータが存在しない場合、このメソッドは何もしません。</p>
<p class="note">このメソッドが引数なしで呼び出された場合、またはフォーマットが空の {{domxref("DOMString", "string")}} であった場合、すべての型のデータが削除されます。</p>
<p>このメソッドはドラッグ操作からファイルを削除<em>しない</em>ので、ドラッグに含まれるファイルがある場合、オブジェクトの {{domxref("DataTransfer.types")}} リストに <code>"Files"</code> タイプのエントリが残る可能性があります。</p>
<div class="note">
<p>このメソッドは、{{event("dragstart")}} イベントのハンドラでのみ使用できます。なぜなら、ドラッグ操作のデータストアが書き込み可能なのはその時だけだからです。</p>
</div>
<h2 id="シンタックス">シンタックス</h2>
<pre class="syntaxbox notranslate"><var>DataTransfer</var>.clearData([<em>format</em>]);
</pre>
<h3 id="パラメータ">パラメータ</h3>
<dl>
<dt><code>format</code> {{optional_inline}}</dt>
<dd>削除するデータの型を指定する {{domxref("DOMString", "文字列")}}。このパラメータが空の文字列であったり、指定されていない場合は、すべての型のデータが削除されます。</dd>
</dl>
<h2 id="Example">Example</h2>
<p>この例では、{{domxref("DataTransfer")}} オブジェクトの{{domxref("DataTransfer.getData()", "getData()")}}、{{domxref("DataTransfer.setData()", "setData()")}}、および {{domxref("DataTransfer.clearData()", "clearData()")}} メソッドを使用しています。</p>
<h3 id="HTML">HTML</h3>
<pre class="brush: html notranslate"><span class="tweaked" id="source" draggable="true">
この要素を選択し、ドロップゾーンにドラッグしてから選択を解除して要素を移動します。
</span>
<span class="tweaked" id="target">ドロップゾーン</span>
<div>ステータス: <span id="status">ドラッグして開始</span></div>
<div>データ: <span id="data">未初期化</span></div>
</pre>
<h3 id="CSS">CSS</h3>
<pre class="brush: css notranslate">span.tweaked {
display: inline-block;
margin: 1em 0;
padding: 1em 2em;
}
#source {
color: blue;
border: 1px solid black;
}
#target {
border: 1px solid black;
}
</pre>
<h3 id="JavaScript">JavaScript</h3>
<pre class="brush: js notranslate">window.addEventListener('DOMContentLoaded', function () {
// HTML要素を選択する
var draggable = document.getElementById('source');
var dropable = document.getElementById('target');
var status = document.getElementById('status');
var data = document.getElementById('data');
var dropped = false;
// イベントハンドラを登録する
draggable.addEventListener('dragstart', dragStartHandler);
draggable.addEventListener('dragend', dragEndHandler);
dropable.addEventListener('dragover', dragOverHandler);
dropable.addEventListener('dragleave', dragLeaveHandler);
dropable.addEventListener('drop', dropHandler);
function dragStartHandler (event) {
status.innerHTML = 'ドラッグ中';
// ドラッグが開始されたことを示すように、ターゲット要素の境界線を変更する
event.currentTarget.style.border = '1px dashed blue';
// 既存のクリップボードをクリアすることから始めます。
// 特定のタイプを指定していないので、これはすべてのタイプに影響します。
event.dataTransfer.clearData();
// ドラッグのフォーマットとデータを設定します(データはイベントターゲットのIDを使用)
event.dataTransfer.setData('text/plain', event.target.id);
data.innerHTML = event.dataTransfer.getData('text/plain');
}
function dragEndHandler (event) {
if (!dropped) {
status.innerHTML = 'ドラッグのキャンセル';
}
data.innerHTML = event.dataTransfer.getData('text/plain') || 'empty';
// ドラッグ中ではないことを示すために境界線を変更する
event.currentTarget.style.border = '1px solid black';
if (dropped) {
// すべてのイベントリスナーを削除
draggable.removeEventListener('dragstart', dragStartHandler);
draggable.removeEventListener('dragend', dragEndHandler);
dropable.removeEventListener('dragover', dragOverHandler);
dropable.removeEventListener('dragleave', dragLeaveHandler);
dropable.removeEventListener('drop', dropHandler);
}
}
function dragOverHandler (event) {
status.innerHTML = 'ドロップ可能';
event.preventDefault();
}
function dragLeaveHandler (event) {
status.innerHTML = 'ドラッグ中 (ドロップは可能)';
event.preventDefault();
}
function dropHandler (event) {
dropped = true;
status.innerHTML = 'ドロップしました。';
event.preventDefault();
// イベント形式に連動したデータを取得する « text »
var _data = event.dataTransfer.getData('text/plain');
var element = document.getElementById(_data);
// イベントのターゲット要素にドラッグソース要素を追加する
event.target.appendChild(element);
// CSSスタイルと表示テキストを変更する
element.style.cssText = 'border: 1px solid black;display: block; color: red';
element.innerHTML = "ドロップゾーンに入りました!";
}
})
</pre>
<p>{{EmbedLiveSample('Example', 300, 250)}}</p>
<h2 id="仕様">仕様</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">仕様書</th>
<th scope="col">ステータス</th>
<th scope="col">コメント</th>
</tr>
<tr>
<td>{{SpecName('HTML WHATWG', 'interaction.html#dom-datatransfer-cleardata','DataTransfer.clearData()')}}</td>
<td>{{Spec2('HTML WHATWG')}}</td>
<td></td>
</tr>
<tr>
<td>{{SpecName('HTML5.1', 'editing.html#dom-datatransfer-cleardata','DataTransfer.clearData()')}}</td>
<td>{{Spec2('HTML5.1')}}</td>
<td>初期定義</td>
</tr>
</tbody>
</table>
<h2 id="ブラウザの互換性">ブラウザの互換性</h2>
<p>{{Compat("api.DataTransfer.clearData")}}</p>
<h2 id="あわせて参照">あわせて参照</h2>
<p>{{page("/ja/docs/Web/API/DataTransfer", "あわせて参照")}}</p>
|