Faites glisser et déposez des images d'un autre site web à la mienne

J'ai lancé une recherche rapide sur google et j'ai trouvé des questions similaires, mais aucune n'était bien formée et la plupart étaient vieilles et avaient l'air abandonnées (pas de réponses et pas de commentaires pendant un moment). Donc, ici, va...

Je veux pouvoir collecter l'url (SEULEMENT l'url) d'une image déposée sur mon site à partir d'un autre site web.. (c'est à dire que j'ai deux chrome fenêtres ouvertes. Fenêtre a ma demande, il. La fenêtre B A imgur dedans. J'ouvre un clic d'image et le fais glisser vers ma fenêtre et laisse aller. Maintenant j'ai besoin de savoir l'url de l'image a chuté sur ma page).

Voici le code avec lequel je travaillais pour les fichiers locaux.

$(document).on('drop', function(e) {
    var data = e.dataTransfer || e.originalEvent.dataTransfer;
    console.log(data); // data.files is empty
    e.preventDefault();
    return false;
});​

Encore une fois, je ne veux rien télécharger.. je n'essaie pas de faire quelque chose de compliqué... J'ai juste besoin de connaître l'emplacement de l'image d'être tombé sur la page d'un autre site.

26
demandé sur starbeamrainbowlabs 2012-06-26 22:49:40

3 réponses

, Essayez ceci: http://jsfiddle.net/2Jet2/70/

$(document).on('dragover', function(e) {
     e.preventDefault();
});
$(document).on('drop', function(e) {
    e.preventDefault();
    e.originalEvent.dataTransfer.items[0].getAsString(function(url){
        alert(url);
    });
});​

Je reçois "http://static3.flattr.net/thing/image/9/4/5/5/0/huge.png?1326712342" Quand j'ai fait glisser cette image d'une autre fenêtre du navigateur.

.getAsString prend un rappel qui obtient l'url en argument une fois qu'il est appelé

Ne fonctionne pas sur firefox

19
répondu Esailija 2013-05-23 10:07:51

Vous pouvez utiliser ceci

$(document).bind('drop', function (e) {        
    var url = $(e.originalEvent.dataTransfer.getData('text/html')).filter('img').attr('src');
    if (url) {
        jQuery('<img/>', {
            src: url,
            alt: "resim"
        }).appendTo('#yourId');            
    }
    return false;
})
6
répondu Yunus BAYRAK 2012-08-29 07:56:15

Basé sur la réponse de Yunus, cela semble fonctionner dans FF:

e.originalEvent.dataTransfer.getData('text/html').match(/src\s*=\s*"(.+?)"/)[1]
2
répondu lepe 2016-12-09 12:34:58