<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>