【JavaScript】ブラウザ画面にドラッグ&ドロップされた画像をimg要素で表示する
問題
エクスプローラーなどからドラッグ&ドロップした画像をJavaScriptで取得したいです。
答え
HTML
<div id="target" style="border: solid 5px #ccc; padding:2em; text-align:center;"> ここに画像ファイルをドロップします。 </div> <img id="preview">
JavaScript
var target = document.getElementById('target'); target.addEventListener('dragover', function (e) { e.preventDefault(); e.stopPropagation(); e.dataTransfer.dropEffect = 'copy'; }); target.addEventListener('drop', function (e) { e.stopPropagation(); e.preventDefault(); const reader = new FileReader(); reader.onload = function (e) { document.getElementById('preview').src = e.target.result; } reader.readAsDataURL(e.dataTransfer.files[0]); });
DEMO
ここに画像ファイルをドロップします。
メモ
JavaScriptをjQueryで書く場合、dropイベントなどを取得するために、e.originalEvent を使う必要がある。
$('target').on("drop", function(_e){ var e = _e; if( _e.originalEvent ){ e = _e.originalEvent; } e.stopPropagation(); e.preventDefault(); //以下略
コメント