<div id="app" draggable="true">
可拖拽
</div>
<script>
// 单位时间以内只触发一次,
// 鼠标移动距离测算
// input http 搜索
// 节流:无论你拖拽一个元素多快,时间都会每隔500ms触发一次
// 节流可以让函数变得平滑
let timer = null;
const app = document.getElementById("app");
app.addEventListener("drag",function(e){
if(timer){
return
}
timer = setTimeout(()=>{
console.log(e.offsetX,e.offsetY);
timer = null;
},500)
})
</script>
封装函数节流
<body>
<div id="app" draggable="true">
可拖拽
</div>
<script>
const app = document.getElementById("app");
app.addEventListener("drag", throttle(function (e) {
console.log(e.offsetY);
}))
function throttle(fn, delay = 500) {
let timer = null;
return function () {
if (!timer) {
timer = setTimeout(() => {
// arguments 是函数内部的一个对象,接收函数传递过来的参数
console.log(arguments);
fn.apply(this, arguments);
timer = null;
}, 5000)
}
}
}
</script>
</body>