drag和dragstart事件类型之间的确切差异(?)

时间:2017-03-24 14:26:23

标签: javascript html html5

从MDN文档我可以阅读:

  

拖动 - 在拖动元素或文本选择时触发。   Dragstart - 当用户开始拖动元素或文本选择时触发

https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API

但是...当我将它附加到“拖动”事件时,为什么我的功能被浏览器忽略了,当我给它“dragstart”时它完全没问题? 根据定义,我假设它们都做同样的事情(?)

function itemDrag(e) {
e.dataTransfer.setData("text", e.target.id);  
}


document.getElementById("try1").addEventListener("dragstart",function(){
    itemDrag(event);
});

1 个答案:

答案 0 :(得分:3)

  

当用户开始拖动元素时会触发dragstart事件   或文字选择。

     

当正在进行元素或文本选择时会触发拖动事件   拖动(每隔几百毫秒)。

所以 dragstart 应该被触发一次,拖动应该连续触发。

这来自MDN页面。

https://developer.mozilla.org/en-US/docs/Web/Events/drag

https://developer.mozilla.org/en-US/docs/Web/Events/dragstart

例如:



let continu = 0;

document.addEventListener("dragstart", function( event ) {

     console.log('start');
     
}, false);
  
document.addEventListener("drag", function( event ) {

  if(continu < 5){
     console.log('continu');
  }
  
  continu ++;
  
}, false);
&#13;
<div class="dropzone">
  <div id="draggable" draggable="true" ondragstart="event.dataTransfer.setData('text/plain',null)">
    This div is draggable
  </div>
</div>
<div class="dropzone"></div>
<div class="dropzone"></div>
<div class="dropzone"></div>
&#13;
&#13;
&#13;

拖动相关事件: