Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

ドラッグ&ドロップ

Learning about Drag and Drop?

After reading this article, head over to the Dev Derby to show the world what you can do!

Firefox や他の Mozilla アプリケーションは、ドラッグ&ドロップ操作をハンドリングするための多くの機能をサポートしています。これにより、ユーザがある要素の上でマウスのボタンを押下して、そのまま他の場所にドラッグし、そこでマウスのボタンを放してドロップする、という操作を実装することができます。ドラッグ操作をしている間は、何をドラッグしているのかが分かるように、マウスポインタの下にドラッグ元の要素が半透明で表示されます。別のアプリケーションに対してドロップすることもできます。 Web サイトや拡張機能、XUL アプリケーションはこの機能を、要素をドラッグ可能にしたり、要素がどの場所にドロップできるのかをユーザに示したりするために活用できます。

このページの内容は Firefox 3.5 (Gecko 1.9.1) またはそれ以降におけるドラッグ&ドロップの機能について解説しています。Firefox 3.0 やそれ以前の古いAPIについては、古いAPIの解説を参照してください。

ドラッグ&ドロップの基本

ドラッグを開始する時には、いくつかの情報が提供されます。

  • ドラッグされるデータは複数の異なる形式を取ることがあります。例えば、文書のデータは、ドラッグされた文字列を含んでいます。これについての詳しい情報は、ドラッグデータを参照してください。
  • ドラッグしている間、ドラッグフィードバックイメージ(ドラッグ中の内容を示す画像)がマウスポインタの横に表示されます。この画像は任意の物を指定できますが、既定の画像がマウスのボタンが押下された要素の内容から自動的に生成されるため、多くの場合、画像を改めて指定する必要はありません。ドラッグフィードバックイメージについてより詳しく学びたい場合は、ドラッグフィードバックイメージの設定を参照してください。
  • ドラッグの種類を示すことができます。3つの種類が利用可能です: copy は、ドロップ元のデータがドロップ先にコピーされようとしていることを示します。move は、データがドロップ先に移動されようとしていることを示します。link は、ドラッグ元とドロップ先の間に何らかの関連付けや繋がりが作られようとしていることを示します。ドラッグ操作をしている間、ドラッグの種類は、その場所にどの操作が可能なのかを示すために変更されるでしょう。詳細はドラッグの種類を参照してください。

Mozilla と Firefox は、標準のドラッグ&ドロップの仕様に含まれていない多数の機能を実装しています。これによって、複数の項目をドラッグしたり、文字列以外のデータをドラッグしたりすることができます。詳しくは複数の項目のドラッグ&ドロップを参照してください。

ドラッグ&ドロップに使われる一般的なデータ型の一覧は、推奨されるドラッグのデータ型を参照してください。

以下の種類の項目のドラッグについては、良い資料となるクイックリファレンスが利用可能です。

DataTransfer オブジェクトの詳細は DataTransfer を参照してください。

ドラッグイベント

ドラッグ&ドロップ操作の様々な段階で発行される、多数のイベントが利用可能です。ドラッグ操作をしている間は、mousemove のような通常のマウスイベントは発行されず、ドラッグイベントのみが発行されることに注意してください。

すべてのドラッグイベントは、ドラッグ操作に関するデータを dataTransfer プロパティに保持しています。

dragstart
ドラッグが開始された時に、ドラッグが開始された要素において発行されます。ユーザは dragstart イベントが発行された要素のドラッグを求めています。このイベントの間、イベントリスナは、ドラッグされるデータやドラッグ操作に関連付けられた画像の情報をセットするでしょう。これについての詳しい情報は、ドラッグ操作の開始を参照してください。
dragenter
ドラッグ中に、マウスポインタが要素の上に乗った最初の時点で発行されます。このイベントに対するリスナは、その場所へのドロップを許可するかどうかを示します。イベントリスナが無い、あるいは、イベントリスナが何も行わなかった場合、初期状態ではその要素へのドロップは許可されません。ドロップが許可されているかどうかをフィードバックするためにハイライト表示したりドロップ位置のマーカーを表示したりしたい場合にも、このイベントを使用します。詳しくはドロップ対象の明示を参照してください。
dragover
このイベントは、ドラッグ中にマウスポインタが要素の上で動いた時に発行されます。ほとんどの場合、イベントリスナは dragenter イベントの時と同じ処理を行うでしょう。詳しくはドロップ対象の明示を参照してください。
dragleave
このイベントは、ドラッグ中にマウスポインタが要素の上から離れた時に発行されます。イベントリスナは、フィードバック用に表示したすべてのハイライト表示やドロップ位置のマーカーを取り除くでしょう。
drag
このイベントは、ドラッグ操作が行われている間、ドラッグ元の要素(※ dragstart イベントが発行された要素)において定期的に発行されます。
drop
drop イベントは、ドラッグ操作の最後に、ドロップされた位置の要素において発行されます。イベントリスナは、ドラッグされたデータを取り出して、ドロップ位置に挿入する処理を担当するでしょう。このイベントはドロップが望まれた時にのみ発行されます。ユーザがドラッグ操作をキャンセルした場合、例えば Esc キーを押したり、ドロップが許可されていない要素の上でマウスのボタンを放したりした場合には、イベントは発行されません。詳しくはドロップの実行を参照してください。
dragend
ドラッグ元の要素は、ドロップに成功したかどうかに関わらず、ドラッグ操作が完了した時に dragend イベントを受け取ります。詳しくはドラッグの終了を参照してください。

ドキュメントのタグと貢献者

タグ: 
 このページの貢献者: ethertank, Piro, drry
 最終更新者: ethertank,