javascript - 为什么 dragstart 中的 event.preventDefault() 会中断进一步拖动事件的执行?

标签 javascript jquery

我正在尝试拖动图像,为了停止浏览器的默认图像拖动,我正在使用 event.preventDefault()。但出于某种原因,它会中断进一步的事件,如 dragenter、dragover、dragend 等的执行。为什么会这样以及如何在不中断正常拖动事件的情况下停止浏览器的默认功能。

<img src="/img/image1" id="img1"/>

jQuery

var obj=$('#ironman');  
obj.on('dragstart', function (e) {
      //e.preventDefault();
      console.log("dragstart");
  });

  obj.on('dragenter', function (e) {
      console.log("dragenter");
  });

  obj.on('dragover', function () {
      console.log("dragover");
  });
  obj.on('dragleave', function () {
      console.log("dragleave");
  });

  obj.on('dragend', function () {
      console.log("dragend");
  });

JSfiddle

最佳答案

这是一项艰巨的任务,因为您要停止元素上的原生拖链事件。不确定为什么要这样做,但是实现 native 拖动的一种方法是取消它并处理鼠标事件

var obj=$('#ironman');  
obj.on('mousedown', function (e) {
  console.log("mousedown");
  // bind to the mousemove event
  obj.on('mousemove', function (e) {
      console.log("mousemove");
  });
});

obj.on('mouseup', function (e) {
  console.log("mouseup");
  // unbind the mousemove event
  obj.unbind('mousemove');
});
obj.on('dragstart', function (e) {
  e.preventDefault();  // cancel the native drag event chain
  console.log("dragstart");
});

关于javascript - 为什么 dragstart 中的 event.preventDefault() 会中断进一步拖动事件的执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19036977/

相关文章:

javascript - Material UI 是否有 Image 组件?

javascript - 如何使用 jquery 将按钮文本更改为 Font Awesome 图标

javascript - 未定义 Uncaught ReferenceError - 使用 Angular 时添加 javascript 函数

javascript - 将字符串拆分为多组字符串

javascript - 使用 "new"表示法将函数设置为对象成员

javascript - 使用 Ajax 使用 POST 验证表单,无需 jquery

jquery 将一个标签放在其他标签周围

javascript - 如何在由javascript创建的html中显示动态url图像

javascript - 使用 jquery 反转名字和姓氏

jquery - 我可以使用 jQuery( ) 作为构造函数吗?