javascript – 拖放在Firefox中无法工作

前端之家收集整理的这篇文章主要介绍了javascript – 拖放在Firefox中无法工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经在 JQuery和html5中实现了拖放功能,它在Chrome中的工作非常出色,但是在Firefox中停留了以下是我的代码,我在其中我提醒了在Firefox中显示为未定义的丢弃图像的ID,以下是我的代码,请帮忙. jsfiddle: http://jsfiddle.net/rajutikale/2R6p8/

视图:

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

解决方法

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

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

function dragstartHandler(event){

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

}

同样的拖曳的未来事件现在将按照您的预期正常开火.显然,您可以用更有用的数据替换setData参数.

原文链接:https://www.f2er.com/js/151538.html

猜你在找的JavaScript相关文章