最近在看h5拖放事件,发现一个有趣的现象,chrome下的拖放事件和别的浏览器有点不同。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.container{
width: 200px;
height: 200px;
background: #ff0;
}
.drag{
width: 100px;
height: 100px;
background: pink;
}
</style>
</head>
<body>
<div class="container" id="container"></div>
<div class="drag" id="drag" draggable=true></div>
<script>
var drag = document.querySelector('#drag');
var container = document.querySelector('#container');
container.addEventListener('dragenter',function(evnet){
console.log('enter')
})
container.addEventListener('dragover',function(evnet){
console.log('over')
})
container.addEventListener('drop',function(evnet){
console.log('drop');
})
container.addEventListener('dragleave',function(evnet){
console.log('leave')
})
</script>
</body>
</html>复制代码
在chrome下,如果鼠标放在拖动元素的上半部分,不管鼠标往哪个方向移动,都会触发目标元素的dragenter和dragleave事件。看下图