2012-06-26 15 views
26

Uruchomiłem szybkie wyszukiwanie google i SO i znalazłem podobne pytania, ale żaden nie był dobrze uformowany i większość z nich była stara i wyglądała na porzuconą (brak odpowiedzi i brak komentarzy przez jakiś czas). A więc tutaj ...Przeciągnij i upuść obrazy z innej strony internetowej do kopalni

Chcę móc pobrać adres URL (tylko adres URL) obrazu, który został zrzucony na moją stronę z innej strony internetowej (tj. Mam otwarte dwa okna chrome A. Aplikacja w oknie, w którym znajduje się okno B. Otwieram kliknięcie obrazu i przeciągam je do mojego okna i puszczam Teraz muszę znać adres URL obrazu zrzuconego na moją stronę).

Oto kod, nad którym pracowałem dla plików lokalnych.

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

Znowu nie chcę wgrać niczego .. Nie chcę robić niczego wyjątkowego ... po prostu trzeba znać położenie obrazu przed upadkiem na stronie z innej strony.

+0

Myślę, że problem polega na tym, że jeśli strona nie jest usi W interfejsie API przeciągnij i upuść HTML5, gdy użytkownik przeciąga obraz, przeglądarka przekazuje mu czyste dane i nie ma żadnych informacji meta (jak src, czego się spodziewasz). – YuriAlbuquerque

+3

Co masz na myśli przez "Uruchomienie interfejsu API przeciągania i upuszczania HTML5". Jeśli chodzi o resztę twojego komentarza, szczerze myślę, że masz cały problem. – rlemon

+0

Mówię o tym: https://developer.mozilla.org/En/DragDrop/Drag_and_Drop (Ok, myliłem się, rzeczywiście dostajesz adres URL, gdy przeciągasz obraz.) Przeszukuję coś przed odpowiedzią). – YuriAlbuquerque

Odpowiedz

19

Spróbuj tego: 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); 
    }); 
});​ 

uzyskać "http://static3.flattr.net/thing/image/9/4/5/5/0/huge.png?1326712342" Kiedy przeciągnięty ten obraz w innym oknie przeglądarki.

.getAsString wykonuje wywołania zwrotnego, która pobiera adres URL jako argument raz to się nazywa

Nie działa na firefox

6

Można to wykorzystać

$(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

Próbowałem tego (mac, FF), adres url jest niezdefiniowany. – iPadDeveloper2011

+0

e.originalEvent.dataTransfer.getData może nie działać, ponieważ Twoja przeglądarka nie ma wpływu na system operacyjny. –

2

podstawie odpowiedzi Yunus, ten wydaje się praca w FF:

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

Testowane w chrome, ale nie działa. wszystko jest w porządku, dopóki: e.originalEvent.dataTransfer.getData ("text/html"), której wartość jest wyświetlana na konsoli, ale nie może być używana jako ciąg. – lepe

+0

dla mnie działa na chrome v30.0 i firefox v24.0, dziękuję ;-) skąd wziąłeś tę sztuczkę? :-) – m1uan

+0

pracował dla mnie :) – Anton

Powiązane problemy