javascript - addEventListener 下降不触发

标签 javascript events drag-and-drop

我正在尝试将放置事件附加到 HTML div:

document.getElementById('sub-main').addEventListener("drop", 
                                     () => {console.log('DROP')});

但它没有开火。为测试目的添加点击事件有效 - 此点击事件触发:

document.getElementById('sub-main').addEventListener("click", 
                                     () => {console.log('Click')});

我读到从 ondragover 返回 false 会有所帮助:

document.getElementById('sub-main').addEventListener("ondragover", 
                                     () => {return false});

document.getElementById('sub-main').addEventListener("drop", 
                                     () => {console.log('Drop')});

但这也行不通。我尝试将 draggable 设置为 true:

document.body.setAttribute('draggable', true);

但也没有运气!

使用 getEventListeners() 将事件监听器记录到控制台会显示所有事件,甚至是我选择的任何随机事件名称:

getEventListeners(document.getElementById('sub-main'));

但是 drop 事件仍然没有触发。有什么想法吗?

最佳答案

要启用拖动,您应该首先使用 dragover 事件禁用浏览器的默认行为。

添加这段代码,它将起作用。

document.addEventListener("dragover", function(event) {
  event.preventDefault();
});

关于javascript - addEventListener 下降不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46668079/

相关文章:

delphi - 拖放时移动图像

javascript - ckeditor 5 在线生成器未显示

android - 如何在 TextWatcher 方法上下文中获取 View ?

events - InDesign CC 2014 扩展脚本 : How to reliably close document after asynchronous PDF export

Java jLabel 位于另一个监听器之上

android - 在 android 中跨布局拖放

javascript - 如何在 jQuery 中添加两个整数值并以 $ amount 输出

javascript - 删除 ng-show 泄漏 $watch

javascript - 在 HTML/CSS 中自定义和定位垂直 slider

jquery - 发送数据到绑定(bind)函数。结构为 "click: function () {...}"