私は JavaScript の経験が限られていることを事前にお知らせします。
現在、私はJavaScriptコードを持っています:
$('#xhr-filebox').bind({
"dragover": HandleDragEvent,
"dragleave": HandleDragEvent,
"drop": HandleDropEvent
});
function HandleDropEvent(e){
var files = e.target.files || e.dataTransfer.files;
UploadFile(files[0]);
}
(一部省略していますが、要望があれば追加します)
...そしてHTML:
<div class="filebox" id="xhr-filebox">
<p id="xhr-action">...or click me to pick one.</p>
</div>
ただし、ファイルをドラッグすると、Chrome JS コンソールに次のように表示されます。
キャッチされていない TypeError: 未定義のプロパティ 'ファイル' を読み取れません
ただし、ファイル入力から読み取るときに FileList オブジェクトを取得できます。
興味深いことに、イベント引数 ( console.log(e) ) をログに記録すると、f.event としてログに記録されますが、私の同様のスクリプトでは、MouseEvent としてログに記録されます (スクリーンショット: http://i.stack.imgur .com/3krcT.png )
jQuery の bind() 関数とは異なり、これは getElementById() によって返される DOM オブジェクトの addEventListener() 関数を使用します。つまり、これは純粋な JavaScript です。私はその方法を試しましたが、何も新しいことは起こりません。