[Edge]△?。→、、
ドラッグ&ドロップ操作中にユーザーに与えられるフィードバック(通常は視覚的)を取得/設定します。
これは、ドラッグ中に表示されるカーソルに影響します。例えば、ユーザーがターゲットのドロップ要素の上にカーソルを置くと、ブラウザーのカーソルが、どの種類の操作が発生するかを示すことができます。
DataTransfer オブジェクトを作成すると、dropEffect には文字列の値が設定されます。取得時には、現在の値を返します。設定時、新しい値が以下の値のいずれかであれば、プロパティの現在の値が新しい値に設定され、それ以外の値は無視されます。
dragenter および dragover イベントでは、ユーザーがどのような操作を要求しているかに基づいて、dropEffect が初期化されます。これをどのように決定するかはプラットフォームによって異なりますが、通常、ユーザーは [alt] キーなどの修飾キーを押して、希望する操作を調整することができます。dragenter と dragover イベントのイベントハンドラー内では、ユーザーが要求している操作とは異なる操作が必要な場合、dropEffect を修正する必要があります。
drop および dragend イベントでは、dropEffect に希望した動作が設定されます。これは、dropEffect が前回の dragenter または dragover イベントの後に有していた値となります。例えば dragend イベントにおいて、望ましい dropEffect が "move" であれば、ドラッグされたデータをソースから削除する必要があります。[Edge]⛌?
DataTransfer | DataTransfer。 |
---|
文字列。ドラッグ操作の効果を表します。取りうる値は以下の通りです。
copy | 新しい場所にソースアイテムのコピーが作成されます。 |
---|---|
move | アイテムを新しい場所に移動します。 |
link | 新しい場所のソースにリンクが確立されます。 |
none | アイテムはドロップしない場合があります。 |
dropEffect に他の値を代入しても効果はなく、古い値が保持されます。
HTML:
<DIV id=IdTest contenteditable>ここにドロップ操作をしてみて…</DIV> <SPAN id=IdLog></SPAN>
JavaScript:
function Job(eve){ //dragend イベントの処理: D=eve; // DA=eve.dataTransfer; IdLog.innerHTML=IdLog.innerHTML+eve.dataTransfer.dropEffect; //最初の dropEffect を記録。 // if(eve.dropEffect=="move"){ eve.dataTransfer.dropEffect="copy"; //dropEffect を変更。 // } IdLog.innerHTML=IdLog.innerHTML+"→"+eve.dataTransfer.dropEffect+" "; //変更後の dropEffect の記録。 } //IdTest.ondrop=Job; document.ondragend=Job; //イベント割り当て。
dropEffect が「move」だったのを「copy」にしても move の“移動”になった。つまり影響がまったくない。「視覚的」ってどんな?