2012-06-26 6 views
26

Ho eseguito una rapida ricerca su google e SO e ho trovato domande simili, ma nessuna era ben formata e la maggior parte erano vecchie e sembravano abbandonate (nessuna risposta e nessun commento per un po '). Quindi ecco qui ...Trascinare e rilasciare immagini da un altro sito Web per estrarre

Voglio essere in grado di raccogliere l'url (solo l'url) di un'immagine che viene rilasciata sul mio sito da un altro sito .. (cioè ho due finestre cromate aperte. applicazione in esso. La finestra B ha imgur in esso. Apro un'immagine clic e la trascino alla mia finestra e lascia andare. Ora ho bisogno di sapere l'url dell'immagine sceso sulla mia pagina).

Ecco il codice con cui stavo lavorando per i file locali.

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

Anche in questo caso non voglio caricare niente .. io non sto cercando di fare qualcosa di fantasia ... Ho solo bisogno di conoscere la posizione delle immagini che è caduto sulla pagina da un altro sito.

+0

Penso che il problema sia: se il sito non è ng l'API di trascinamento e rilascio HTML5, quando un utente trascina l'immagine, il browser gli fornisce dati puri e nessun tipo di meta informazione (come src, che è ciò che ti aspetti). – YuriAlbuquerque

+3

Cosa intendi con "Esecuzione dell'API di trascinamento HTML5". Per quanto riguarda il resto del tuo commento, penso onestamente che tu abbia confuso l'intera faccenda. – rlemon

+0

Sto parlando di questo: https://developer.mozilla.org/En/DragDrop/Drag_and_Drop (Ok, ho sbagliato. In effetti ottieni l'URL quando trascini un'immagine. Cercherò qualcosa prima della risposta). – YuriAlbuquerque

risposta

19

provate questo: 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); 
    }); 
});​ 

ottengo "http://static3.flattr.net/thing/image/9/4/5/5/0/huge.png?1326712342" Quando ho trascinato l'immagine da un'altra finestra del browser.

.getAsString prende una callback che ottiene l'URL come argomento una volta che è chiamato

Non funziona su Firefox

6

È possibile utilizzare questo

$(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; 
}) 
+0

Ho provato questo (mac, FF), l'URL non è definito. – iPadDeveloper2011

+0

e.originalEvent.dataTransfer.getData potrebbe non funzionare il browser perché il sistema operativo non ha effetto. –

2

Sulla base di risposta di Yunus, questo sembra lavoro in FF:

e.originalEvent.dataTransfer.getData('text/html').match(/src\s*=\s*"(.+?)"/)[1] 
+0

Testato in chrome ma non funziona. tutto va bene fino a quando: e.originalEvent.dataTransfer.getData ('text/html'), quale valore viene visualizzato sulla console ma non può essere usato come String. – lepe

+0

per me lavoro su chrome v30.0 e firefox v24.0, grazie ;-) dove hai trovato questo trucco? :-) – m1uan

+0

ha funzionato per me :) – Anton

Problemi correlati