javascript - 掉落事件没有发生

标签 javascript html

使用此代码显示拖动消息但不显示拖放消息。当我拖动第一个元素时,并没有在视觉上被拖动,而是触发了 dragstart 事件

 <!DOCTYPE HTML>
<html>
    <head>

    </head>
        <body>
            <section draggable="true" id="origen" style="height: 50px; width: 50px; border-color: green; border-style: solid;">origen</section>
            <section draggable="true" id="destino" style="height: 200px; width: 200px; border-color: blue; border-style: solid;">destino</section>

            <script>
                window.addEventListener("load",carga);
                var origen = document.getElementById('origen');
                var destino = document.getElementById('destino');

                function carga(e){
                    origen.addEventListener('dragstart',function(e){
                        e.preventDefault();
                        e.dataTransfer.setData("Text",origen.outerHTML);
                        console.log("dragstart");
                    },false);


                    destino.addEventListener('drop',function(e){
                        e.preventDefault();
                        //origen.innerHTML = e.dataTransfer.getData("Text");
                        console.log('dropped');
                    },false);
                }
            </script>
        </body>
</html> 

最佳答案

您正在使用 e.preventDefault() 取消 dragstart 事件,这就是元素未被拖动的原因。

但是,您必须取消放置目标的 dragover 事件,以便允许其他元素放置到它上面。 (有关为什么会出现这种情况的更多信息,请参见 here)

window.addEventListener("load",carga);
var origen = document.getElementById('origen');
var destino = document.getElementById('destino');

function carga(e){
    origen.addEventListener('dragstart',function(e){
        //e.preventDefault();
        e.dataTransfer.setData("Text",origen.outerHTML);
        console.log("dragstart");
    },false);

    destino.addEventListener('dragover',function(e){
        e.preventDefault();
    });
    destino.addEventListener('drop',function(e){
        e.preventDefault();
        //origen.innerHTML = e.dataTransfer.getData("Text");
        console.log('dropped');
    },false);
}
<section draggable="true" id="origen" style="height: 50px; width: 50px; border-color: green; border-style: solid;">origen</section>
<section draggable="true" id="destino" style="height: 200px; width: 200px; border-color: blue; border-style: solid;">destino</section>

关于javascript - 掉落事件没有发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47205594/

相关文章:

javascript - onclick在php上显示MySQL fetch echo的值

css - 对齐 ="center"不工作

javascript - URL 内的元标记和脚本处理

javascript - jQuery:雅虎自动完成/自动建议

javascript - 在 Electron 中写入 "appData"中的文件。在哪里添加 import { app } from "electron";?

javascript - 如何在 JavaScript window.prompt 中添加换行符?

html - 将标签添加到 Divy 侧边导航

javascript - 在 JavaScript 中计算对数数组的平均值

javascript - 将引号放入 JSON 数组中

javascript - jQuery - Lightgallery.js - 检测幻灯片即将结束