// 自定义指令定义
{/* demo
Click me
*/ }
export default {
mounted(el, binding, vnode) {
// 记录上一次点击的时间
let lastClickTime = 0;
// 监听元素的点击事件
el.addEventListener('click', function (event) {
console.log(lastClickTime)
if(lastClickTime == 0){
binding.value(event);
lastClickTime = Date.now();
}else{
// 获取当前时间戳
let currentTime = Date.now();
// 定义禁止连续点击的时间间隔(以毫秒为单位)
const doubleClickInterval = 500;
// 检查是否在禁止的时间间隔内进行了连续点击
if (currentTime - lastClickTime > doubleClickInterval) {
// 阻止默认行为
event.preventDefault();
binding.value(event);
// 更新上一次点击的时间戳
lastClickTime = currentTime;
}
}
});
// let clickTimer;
// console.log(el, binding, vnode)
// console.log('v-no-double-click mounted')
// el.addEventListener('click', function (event) {
// if (clickTimer) {
// // 如果上一次点击的计时器还存在,则取消计时器并阻止连续点击
// clearTimeout(clickTimer);
// }
// // 创建一个延迟执行的函数,以防止连续点击
// clickTimer = setTimeout(() => {
// binding.value(event)
// }, 200); // 设置延迟时间(毫秒)
// });
},
// 在元素被插入到 DOM 中时被调用
inserted: function (el, binding, vnode) {
}
}