123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- // 自定义指令定义
- {/* demo <div v-no-double-click="myMethod">Click me</div> */ }
- 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) {
-
- }
- }
|