2012-06-26 46 views
26

Tôi đã chạy tìm kiếm nhanh chóng và tìm kiếm tương tự nhưng không có câu hỏi nào được tạo ra và hầu hết đều cũ và bị bỏ qua (không có câu trả lời và không có nhận xét nào trong một thời gian). Vì vậy, ở đây ...Kéo và thả hình ảnh từ một trang web khác vào mỏ

Tôi muốn có thể thu thập url (chỉ url) của hình ảnh bị rơi vào trang web của tôi từ một trang web khác .. (nghĩa là tôi có hai cửa sổ chrome mở. ứng dụng trong đó. Cửa sổ B đã imgur trong đó. Tôi mở một hình ảnh nhấp và kéo nó vào cửa sổ của tôi và buông bỏ. Bây giờ tôi cần phải biết url của hình ảnh được thả trên trang của tôi).

Đây là mã tôi đang làm việc với các tệp cục bộ.

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

Một lần nữa tôi không muốn tải lên bất cứ điều gì .. tôi không cố gắng làm bất cứ điều gì lạ mắt ... Tôi chỉ cần biết vị trí của hình ảnh bị rơi trên trang từ một trang web khác.

+0

Tôi nghĩ rằng vấn đề là: nếu trang web không phải là usi API kéo và thả HTML5, khi người dùng kéo hình ảnh, trình duyệt cung cấp cho anh ta dữ liệu thuần túy và không có loại thông tin meta nào (như src, đó là những gì bạn đang mong đợi). – YuriAlbuquerque

+3

Ý của bạn là gì bằng cách "Chạy API kéo và thả HTML5". Đối với phần còn lại của bình luận của bạn tôi thành thật nghĩ rằng bạn có toàn bộ điều bối rối. – rlemon

+0

Tôi đang nói về điều này: https://developer.mozilla.org/En/DragDrop/Drag_and_Drop (Ok, tôi đã sai. Bạn thực sự nhận được URL khi bạn kéo hình ảnh. Tôi sẽ tìm kiếm nội dung nào đó trước câu trả lời). – YuriAlbuquerque

Trả lời

19

Hãy thử điều này: 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); 
    }); 
});​ 

tôi nhận được "http://static3.flattr.net/thing/image/9/4/5/5/0/huge.png?1326712342" Khi tôi kéo hình ảnh từ một cửa sổ trình duyệt.

.getAsString mất một callback mà được url như là đối số lần nó được gọi là

Không hoạt động trên firefox

6

Bạn có thể sử dụng này

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

Tôi đã thử điều này (mac, FF), url là không xác định. – iPadDeveloper2011

+0

e.originalEvent.dataTransfer.getData có thể sẽ không hoạt động vì nguyên nhân khiến trình duyệt của bạn không ảnh hưởng đến hệ điều hành. –

2

Dựa trên câu trả lời Yunus, điều này dường như làm việc trong FF:

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

Được thử nghiệm bằng chrome nhưng không hoạt động. mọi thứ đều ổn cho đến khi: e.originalEvent.dataTransfer.getData ('text/html'), giá trị nào được hiển thị trên bảng điều khiển nhưng nó không thể được sử dụng như String. – lepe

+0

cho tôi làm việc trên chrome v30.0 và firefox v24.0, cảm ơn bạn ;-) bạn đã tìm thấy mẹo này ở đâu? :-) – m1uan

+0

đã hoạt động với tôi :) – Anton

Các vấn đề liên quan