拖放不能在Firefox中工作

我已经在JQuery和html5中实现了拖放function,它在chrome中工作得很好,但在Firefox中保留以下是我的代码,我警告丢弃图像的ID,在Firefox中显示为未定义,以下是我的代码,请帮忙。 jsfiddle: http : //jsfiddle.net/rajutikale/2R6p8/

视图:

 <a href="#?w=976" rel="popup1" id="content_id?>" class="poplight album_photos"><img id="content_id?>" draggable="true" ondragstart="drag(event)" ondragover="allowDrop(event)" alt="" src=""> <input type="hidden" id="content_id?>" value="wall_id?>" /> <input type="hidden" id="content_id?>" value="content_type?>" /> <input type="hidden" id="content_id?>" value="" />  
<img id="dropzon_image"src="https://stackoverflow.com/questions/18269677/drag-and-drop-not-working-in-firefox/babbler_btn.jpg" alt="" border="0" style="cursor: pointer; cursor: hand; "/>
<img id="drop_image" src="https://stackoverflow.com/questions/18269677/drag-and-drop-not-working-in-firefox/drop_image.jpg" alt="" border="1" style="cursor: pointer; cursor: hand; " />

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)); } 

Firefox要求用户在事件中运行dataTransfer.setData函数。

对于jQuery用户,这意味着以下代码可以解决您的问题:

 function dragstartHandler(event){ event.originalEvent.dataTransfer.setData('text/plain', 'anything'); } 

现在,相同阻力的未来事件将按预期正常启动。 显然,您可以使用更有用的数据替换setData参数。

根据https://developer.mozilla.org/en-US/docs/Web/Events/dragstart将数据设置为null(如示例的html部分或事件函数中):

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

铬不需要那样做。