|
@@ -0,0 +1,51 @@
|
|
|
+// 自定义指令定义
|
|
|
+{/* 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) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|