Si potrebbe definire una zona di lancio:
<div id="dropbox">DropZone => you could drop any image from any page here</div>
e quindi gestire le dragenter
, dragexit
, dragover
e drop
eventi:
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);
}
E 'all'interno del gestore drop
caso in cui siamo leggere i dati dell'immagine dall'oggetto dataTransfer
come testo. Se abbiamo eliminato un'immagine da qualche altra pagina web, questo testo rappresenterà l'URL dell'immagine.
E questo è un live demo
.
UPDATE:
Sembra che non ci sono differenze tra Chrome su Windows e MacOS. Su Windows dataTransfer.getData('Text');
funziona ma non su MacOS. dataTransfer.getData('URL');
dovrebbe funzionare su entrambi.
fonte
2012-08-15 16:41:54
Questo sta avvisando una stringa vuota in Chrome – Duopixel
@Duopixel, è molto strano. Funziona per me: Chrome 21.0, Windows 7 a 64 bit. Quale sistema operativo stai usando? Funziona con FF? –
Chrome 21 MacOS 10.7.4. Forse altri utenti MacOS possono confermare, chiunque? Funziona in Firefox. – Duopixel