アップデート:
Windows と MacOS の Chrome には違いがあるようです。Windows ではdataTransfer.getData('Text');
動作しますが、MacOS では動作しません。dataTransfer.getData('URL');
両方で動作するはずです。
古い答え:
ドロップ ゾーンを定義できます。
<div id="dropbox">DropZone => you could drop any image from any page here</div>
dragenter
、dragexit
、dragover
およびdrop
イベントを処理します。
var dropbox = document.getElementById('dropbox');
dropbox.addEventListener('dragenter', noopHandler, false);
dropbox.addEventListener('dragexit', noopHandler, false);
dropbox.addEventListener('dragover', noopHandler, false);
dropbox.addEventListener('drop', drop, false);
function noopHandler(evt) {
evt.stopPropagation();
evt.preventDefault();
}
function drop(evt) {
evt.stopPropagation();
evt.preventDefault();
var imageUrl = evt.dataTransfer.getData('Text');
alert(imageUrl);
}
オブジェクトdrop
から画像データを Text として読み取っているのは、イベント ハンドラー内です。dataTransfer
他の Web ページから画像をドロップした場合、このテキストは画像の URL を表します。
そして、ここにありlive demo
ます。