2012-02-20 17 views
3

divに落とした画像のURLを取得しようとしています。これは私が使用するコードです:私は、彼らがしている画像でこれを行うにしようとすると、(私はimg要素のsrc属性を取得します)リンクしていない画像をドラッグアンドドロップするとき、それは素晴らしい作品ながらドロップされた(リンクされた)画像のURLを取得する方法は?

$('#dropzone') 
    .bind('dragenter dragover', false) 
    .bind('drop', function(e) { 
     e.stopPropagation(); 
     e.preventDefault(); 
     alert(e.dataTransfer.getData('text')); 
    }); 

事は、ありますリンク(<a href="..."><img src="..."></a>)の場合、img要素のsrc属性ではなく、a要素のhref属性が返されます。

アイデア?

ブラウザの互換性については気にしませんが、Firefox(またはChrome)でのみ動作させたいと考えています。

編集:ここではそれはのように見える方法は次のとおりです(ちなみにFirefoxでのみ動作しているようだ)http://jsfiddle.net/SPdHR/2/

+0

http://stackoverflow.com/a/19564982/746754を参照してください。 – acarlon

答えて

0

あなたは試してみてください:

あなたが後に使用する必要があります
$(e.target).find("img") 
+0

おかげさまで、正直言って、私はこの文脈でどのように使用するのか分かりません。私が追加したフィドルを見ていただけますか?ありがとう! – Mike

+0

Chromeのコンソールによれば、「e.target」はドラッグ対象です。つまり、「

DRAG A KITTEN HERE
」です。 –

0

を上記コード

$('#dropzone') 
.bind('dragenter dragover', false) 
.bind('drop', function(e) { 
    e.stopPropagation(); 
    e.preventDefault(); 

    var data = $(e.dataTransfer.getData('text/html')); 
    var src = e.dataTransfer.getData("Text"); 
    var img = data.attr('src'); 
    if (!img) { 
     var img = data.find("img").attr('src'); 

     alert(img); 
}); 
1

あなたはこれを試すことができます。

$('#target') 
    .bind('dragenter dragover', false) 
    .bind('drop', function(e) { 
     e.stopPropagation(); 
     e.preventDefault(); 
     var imageUrl = e.dataTransfer.getData('text/html'); 
    if($(imageUrl).children().length > 0){ 
     var url = $(imageUrl).find('img').attr('src'); 
    }else{   
     var url = $(imageUrl).attr('src'); 
    } 
     $('#result').html(url); 
    }); 

これは、FirefoxとChromeの両方で動作します(最新バージョン)
が更新FIDDLE

0

私の好ましい方法は見つけることのdataTransferテキストの正規表現検索を使用することです参照してください。 http://で始まり "(ただし結果に"は含まれません)で終わる文字列です。

$('#dropzone') 
.bind('dragenter dragover', false) 
.bind('drop', function(e) { 
    e.stopPropagation(); 
    e.preventDefault(); 
    if(e.dataTransfer.files.length>0){ 
     //Handle the local file 
    } 
    else{ 
     //Find the url embedded in the dataTransfer data 
     var data = e.dataTransfer.getData("text/html"); 
     var matches = data.match(/http:\/\/.*(?=")/gi); 
     var url = (matches || [false])[0]; //returns the url or false if no match found 

     //Do whatever with the url 
     console.log(url); 
    } 
}); 
関連する問題