javascript - 拖放在 Firefox 中不起作用

标签 javascript jquery html drag-and-drop

<分区>

我已经在 J​​Query 和 html5 中实现了拖放功能,它在 chrome 中运行良好但在 Firefox 中卡住了,下面是我的代码,我在其中警告拖放图像的 id,它在 Firefox 中显示为未定义下面是我的代码,请帮忙。 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));
}

最佳答案

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

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

Chromium 不需要这些。

关于javascript - 拖放在 Firefox 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18269677/

相关文章:

javascript - 如何为网格中的每个圆圈分配随机颜色,然后让每个圆圈从起始颜色开始遍历色谱?

javascript - HTML 上的 Jquery 选择器

JavaScript 素数生成器

javascript - jQuery .search() 到任何字符串

javascript - 为什么 JQUERY 克隆函数并向其附加一个 id 并确认电子邮件值?

javascript - 获取伪类的值

jquery - 使用 jQuery 选择焦点文本在 iPhone iPad 浏览器中不起作用

html - 如何在两个部分之间定位图像?

javascript - 根据 div 高度的变化更新布局

javascript - Angular Material 表拖放列排序不起作用