2013-08-16 35 views
9

ドラッグアンドドロップ機能をJQueryとhtml5に実装しました。クロムでうまくいっていましたが、Firefoxでスタックしました。次のコードでは、落ちた画像のIDに警告します。私のコードです、助けてください。 jsfiddle:http://jsfiddle.net/rajutikale/2R6p8/Firefoxでドラッグ&ドロップが動作しない

ビュー:

<!-- dragable image --> 
<a href="#?w=976" rel="popup1" id="<?=$album['album_id'].'-'.$data->content_id?>" class="poplight album_photos"><img id="<?=$album['album_id'].'-'.$data->content_id?>" draggable="true" ondragstart="drag(event)" ondragover="allowDrop(event)" alt="" src="<?=$imagePath?>"></a> 

<input type="hidden" id="<?='wall'.$data->content_id?>" value="<?=$data->wall_id?>" /> 
<input type="hidden" id="<?='type'.$data->content_id?>" value="<?=$data->content_type?>" /> 
<input type="hidden" id="<?='user'.$data->content_id?>" value="<?=$_SESSION['user_type']?>" /> 

<!-- dropable area --> 
<div class="" style="z-index: 1; position:fixed; right:124px; top:60px" id="div1" ondrop="drop(event);;" ondragover="allowDrop(event);"> <a href="#"><img id="dropzon_image"src="<?php echo IMAGE_PATH_HTTP?>babbler_btn.jpg" alt="" border="0" style="cursor: pointer; cursor: hand; "/></a> 
    <div id="overlay" style="display:none;z-index: 2; position:fixed; right:0px; top:32px; cursor: pointer;border-color: blueviolet;"> 
     <img id="drop_image" src="<?php echo IMAGE_PATH_HTTP?>drop_image.jpg" alt="" border="1" style="cursor: pointer; cursor: hand; " /> 
    </div> 
</div> 

JS:

function allowDrop(ev) { 
    ev.preventDefault(); 
} 

function drag(ev) { 
    ev.dataTransfer.setData("Text", ev.target.id); 
    $("#div1").find("#overlay").slideDown(); 
    setTimeout(function() { 
     $("#overlay").hide(); 
    }, 4000); 
} 

function drop(ev) { 
    var id = ev.dataTransfer.getData("Text"); /*implimented solution*/ 
    alert(id); 
    ev.preventDefault(); 
    var action = 'download'; 
    var wall_id = '62'; 
    var stat = 'Album'; 
    var cnt = '0'; 
    var user_type = 'R'; 
    var status = do_download(action, wall_id, stat, cnt, user_type); 
    $("#overlay").hide(); 
    // ev.target.appendChild(document.getElementById(data)); 
} 
+0

ここでうまく動作するようです。 Firefoxのバージョン。あなたのコンソールにエラーが出ますか? – putvande

+0

よく私は22.0を使用しています、私はそれをデバッグするために非常に試してみました、それは私の最後にドラッグイベントを発射していないようなコンソールでのようなエラーを表示しません....私は何をすべきですか? – Zorba

+1

同じ質問が複数回投稿されましたか? http://stackoverflow.com/questions/18249081/my-solution-for-drag-drop-functionality-is-not-working-in-firefox – ViliusL

答えて

28

FirefoxはユーザーがイベントにdataTransfer.setData機能を実行する必要があります。

function dragstartHandler(event){ 

    event.originalEvent.dataTransfer.setData('text/plain', 'anything'); 

} 
あなたが予想されるのと同じドラッグの

将来のイベントが正しく起動します:次のコードは、あなたの問題を解決する必要があることを意味しますjQueryユーザーの場合

、。明らかに、より有用なデータでsetData引数を置き換えることができます。

+2

私はそれを追加しましたが、ドラッグが終了するたびに、それは新しいタブ/ウィンドウを開き、 "http://www.anything.com/"に行きます(ON Firefoxのみ)。なんてこったい? –

+4

@NiCkNewman私は同じ問題を抱えており、[この回答](http://stackoverflow.com/a/14542233/2588746)で修正されました。 'event.preventDefault()'が必要です。 – xfra35

関連する問題