デスクトップからファイルをドラッグするためにjQueryのdrop
イベントを使用することは可能ですか?
その場合、ドロップされたファイルデータを取得するにはどうすればよいですか?
少々厄介ですが(少なくとも3つのイベントを処理する必要があります)、可能です。
最初に、dragover
およびdragenter
のイベントハンドラーを追加し、これらのイベントのデフォルトアクションを防止する必要があります。
$('#div').on(
'dragover',
function(e) {
e.preventDefault();
e.stopPropagation();
}
)
$('#div').on(
'dragenter',
function(e) {
e.preventDefault();
e.stopPropagation();
}
)
これらのイベントでpreventDefault
を呼び出すことが実際に重要です。そうしないと、一部のブラウザーがdrop
イベントをトリガーしない場合があります。
次に、ドロップハンドラを追加し、e.originalEvent.dataTransfer.files
を使用してドロップされたファイルにアクセスできます。
$('#div').on(
'drop',
function(e){
if(e.originalEvent.dataTransfer && e.originalEvent.dataTransfer.files.length) {
e.preventDefault();
e.stopPropagation();
/*UPLOAD FILES HERE*/
upload(e.originalEvent.dataTransfer.files);
}
}
);
これで、div内のデスクトップ/エクスプローラー/ファインダーからファイルをドラッグしてアクセスできるようになりました。