2013-08-16 25 views
9

JQuery ve html5 içinde sürükle ve bırak işlevselliği uyguladım, chrome'da harika çalışıyor ancak Firefox'ta takılı kaldım. Aşağıda, Firefox'ta tanımlanmamış olarak görünen düşmüş resim kimliğini uyaran kodum var. benim kodum, lütfen yardım edin. jsfiddle: http://jsfiddle.net/rajutikale/2R6p8/sürükle ve bırak firefox çalışmıyor

Görünüm:

<!-- 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

Burada gayet iyi görünüyor. Hangi sürüm Firefox. Konsolunuzda hatalar var mı? – putvande

+0

de 22.0 kullanıyorum, hata ayıklamak için çok uğraştım, konsolda olduğu gibi herhangi bir hatayı göstermemek gibi bir şey göstermemek benim için sonunda sürükle olayı ateş etmiyor .... lütfen ne yapmalıyım? – Zorba

+1

aynı soru birden çok kez gönderildi? http://stackoverflow.com/questions/18249081/my-solution-for-drag-drop-functionality-is-not-working-in-firefox – ViliusL

cevap

28

Firefox kullanıcı olayı dataTransfer.setData fonksiyonunu çalıştırmak gerektirir. Eğer beklendiği gibi aynı caddesi üzerinde

function dragstartHandler(event){ 

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

} 

Gelecek etkinlikler artık düzgün tetikler: Eğer jQuery kullanıcıları için

, o Aşağıdaki kod sorununuzu çözmek gerektiği anlamına gelir. Açıkçası, setData argümanlarını daha kullanışlı verilerle değiştirebilirsiniz.

+2

Hmm .. Bunu ekledim ama şimdi her şey bittiğinde, Yeni bir sekme/pencere açıyor ve "http://www.anything.com/" adresine gidiyor. (Sadece Firefox'ta). Ne oluyor be? –

+4

@NiCkNewman Aynı sorunla karşılaştım ve [bu yanıt] (http://stackoverflow.com/a/14542233/2588746) düzeltildi. Event.preventDefault() 'gerekir. – xfra35