我的js文件中有以下代码

window.onload = function () {

    var canvas = document.getElementById('canvas');
    canvas.addEventListener('dragover', drag_over, false);
    canvas.addEventListener('dragenter', drag_over, false);
    canvas.addEventListener('drop', dropped, false);
}

在某个时候,我创建了一个像这样的可拖动元素
element.addEventListener('dragstart', dragstart, false);

我有这样的回调:
function dragstart(e) {
    console.log("dragstart");
}

function dropped(e) {
    console.log("dropped");
 }
function drag_over(e) {
    console.log("dragover");
    e.preventDefault();
    return false;
}

问题是该代码在chrome中可以正常工作,但在Firefox中不能正常工作。
在firefox中,将触发dragstart回调,但不会触发其余部分。无知:(

最佳答案

看来您必须在.setData()函数中调用dragstart才能使其真正起作用。

function dragstart(e) {
    console.log("dragstart");
    e.dataTransfer.setData('text/plain', 'dummy');
}

以下来自MDN documentation:

10-04 16:40