<description value="AA" ondragstart="event.dataTransfer.setData( 'text/plain', 'BB' )" />
このdescription要素は「AA」というテキストを表示し、それをドラッグして'text/plain'を受け入れるコントロールへドロップすると、そこに「BB」というテキストが挿入されます。
イベント | 発生タイミング |
---|---|
drag | ドラッグされているとき。数100msごとに連続して発生 |
dragstart | ドラッグが開始されたとき。 |
dragend | ドラッグが終了したとき。マウスボタンが離されたり、Escキーが押されることによって発生 |
dragover | ドロップ可能な場所の上でドラッグされているとき。数100msごとに連続して発生 |
dragenter | ドロップ可能な場所の上にドラッグされたとき。 |
dragleave | ドロップ可能な場所の上からドラッグが離れたとき。 |
drop | ドロップ可能な場所にドロップされたとき。 |
void setData( in String type, // 追加するデータの型 in String data // 追加するデータ );setData() - DataTransfer - Web API Interfaces | MDN
setDate()をくり返し呼ぶことで、ドラッグ データには複数のデータを追加できます。そのとき同じtypeがすでに追加されていた場合には、前のデータが置換されます。
typeには次項のドラッグ型、もしくは独自に定義した型を指定します。
String getData( in String type );getData() - DataTransfer - Web API Interfaces | MDN
typeのデータを受け取れます。指定の型が存在しなかったり、そもそもデータが含まれていない場合には空文字が返されます。先に含まれている型を知りたいならば、typesプロパティで確認できます。
このメソッドにより返されるデータは、つねに文字列です。
型 | サンプルコード |
---|---|
Text | event.dataTransfer.setData( 'text/plain', 'This is text to drag' ) |
Links |
var dt = event.dataTransfer; dt.setData( 'text/uri-list', 'http://www.mozilla.org' ); dt.setData( 'text/plain', 'http://www.mozilla.org' ); |
HTML and XML |
var dt = event.dataTransfer; dt.setData( 'text/html', 'Hello there, <strong>stranger</strong>' ); dt.setData( 'text/plain', 'Hello there, stranger' ); |
Files | event.dataTransfer.mozSetDataAt( 'application/x-moz-file', file, 0 ); |
Images |
var dt = event.dataTransfer; dt.mozSetDataAt( 'image/png', stream, 0 ); dt.mozSetDataAt( 'application/x-moz-file', file, 0 ); dt.setData( 'text/uri-list', imageurl ); dt.setData( 'text/plain', imageurl ); |
Nodes | event.dataTransfer.setData( 'application/x-moz-node', '' ) |
Custom Data |
|
独自に定義したデータには、独自のデータ型を定義できます。しかしその場合にも、代替のテキスト データを提供することが推奨されます。
ドラッグ元のデータについて、どの操作を許可するのか明示します。
event.dataTransfer.effectAllowed = 'copy';
このeffectAllowedプロパティには、下表のいずれかの値を指定します。
コピー | 移動 | リンク | |
---|---|---|---|
none | × | × | × |
copy | ○ | × | × |
move | × | ○ | × |
link | × | × | ○ |
copyMove | ○ | ○ | × |
copyLink | ○ | × | ○ |
linkMove | × | ○ | ○ |
all | ○ | ○ | ○ |
これらの操作は、たとえばエクスプローラでファイルをドラッグする場合には、ファイルのコピー、移動、リンクの作成に相当します。
HTMLの要素でもそれにdraggable属性を設定することで、ドラッグ&ドロップをカスタマイズできます。
<span draggable="true" ondragstart="event.dataTransfer.setData( 'text/plain', 'BB' )">AA</span>
下のテキストを、テキストボックスへドラッグ&ドロップしてください。