当前位置: 首页 > wzjs >正文

网站浮动窗口怎么做抄一则新闻四年级

网站浮动窗口怎么做,抄一则新闻四年级,工程建设资质单位网站,从建站到网络优化当一个元素上,同时绑定了双击事件和单击事件,当双击时,会触发单击事件,如何避免双击时触发单击事件? ​ 方法 1:使用 setTimeout 延迟处理单击事件​ 通过延迟单击事件的处理时间,避免与双击事…

当一个元素上,同时绑定了双击事件和单击事件,当双击时,会触发单击事件,如何避免双击时触发单击事件?

方法 1:使用 setTimeout 延迟处理单击事件​

通过延迟单击事件的处理时间,避免与双击事件冲突。

<template><button @click="handleClick" @dblclick="handleDoubleClick">点击/双击我</button>
</template><script setup>
import { ref } from 'vue'const clickTimeout = ref(null)const handleClick = () => {// 清除之前的定时器(防止双击时触发单击)if (clickTimeout.value) {clearTimeout(clickTimeout.value)clickTimeout.value = nullreturn}// 设置新的定时器,延迟执行单击逻辑clickTimeout.value = setTimeout(() => {console.log('单击事件触发')// 执行单击逻辑...clickTimeout.value = null}, 300) // 300ms 内如果有双击,则不会触发单击
}const handleDoubleClick = () => {// 清除单击定时器,防止单击事件触发if (clickTimeout.value) {clearTimeout(clickTimeout.value)clickTimeout.value = null}console.log('双击事件触发')// 执行双击逻辑...
}
</script>

方法2:使用 v-click-outside 或自定义指令

如果需要在复杂交互中区分单击和双击,可以封装一个自定义指令。

实现方式:

// directives/clickOrDoubleClick.js
export default {mounted(el, binding) {let clickTimeout = nullconst { value, arg } = bindingel.addEventListener('click', (e) => {if (clickTimeout) {clearTimeout(clickTimeout)clickTimeout = nullreturn}clickTimeout = setTimeout(() => {if (typeof value === 'function') {value(e, 'click')}clickTimeout = null}, 300)})el.addEventListener('dblclick', (e) => {if (clickTimeout) {clearTimeout(clickTimeout)clickTimeout = null}if (typeof value === 'function') {value(e, 'dblclick')}})},unmounted(el) {el.removeEventListener('click', () => {})el.removeEventListener('dblclick', () => {})},
}

注册指令​

// main.js
import { createApp } from 'vue'
import App from './App.vue'
import clickOrDoubleClick from './directives/clickOrDoubleClick'const app = createApp(App)
app.directive('click-or-double-click', clickOrDoubleClick)
app.mount('#app')

使用方式

<template><button v-click-or-double-click="(e, type) => handleClick(e, type)">点击/双击我</button>
</template><script setup>
const handleClick = (e, type) => {if (type === 'click') {console.log('单击事件')} else if (type === 'dblclick') {console.log('双击事件')}
}
</script>

方法 4:使用 lodash.debounce 或 lodash.throttle(适用于复杂场景)​

如果单击事件逻辑较复杂,可以使用防抖(debounce)或节流(throttle)来优化。

<script setup>
import { ref } from 'vue'
import { debounce } from 'lodash'const handleClick = debounce(() => {console.log('单击事件(防抖处理)')
}, 300)const handleDoubleClick = () => {console.log('双击事件')
}
</script><template><button @click="handleClick" @dblclick="handleDoubleClick">点击/双击我</button>
</template>

注意​​

  • 防抖适用于单击事件,但双击事件仍然需要单独处理。
  • 如果双击事件触发后,单击事件仍然可能被误触发,建议结合 setTimeout 方法。
http://www.dtcms.com/wzjs/481465.html

相关文章:

  • 网站建设专家联系方式做高端网站公司
  • 网站建设时间进度表南宁seo平台标准
  • 有什么可以做试卷题目的网站小红书笔记关键词排名优化
  • 网站广告弹出来代码网络推广软文
  • 档案安全网站安全建设网店如何做推广
  • 石家庄网站制作找谁今日热榜官网
  • 如何外贸seo网站建设专业网站建设公司
  • 投资网站建设软件制作平台
  • 怎么把自己做的网站放到百度上今日的重大新闻
  • 用万网做网站网络营销与管理
  • 河南郑州暴雨百度seo快速见效方法
  • 微信小程序制作网站搜索排名优化
  • cms网站制作怎么免费注册域名
  • 北京哪家做网站优化公司网站搭建
  • 高端网站建设 骆域名服务器查询
  • 开封景区网站建设方案百度应用
  • 文章博客媒体网站模板seo什么意思中文意思
  • 导航网站的网站地图怎么做今日热点新闻
  • 如何开发小程序商城seo综合查询爱站
  • 网站营销学多久武汉seo优化分析
  • 柳州网站网站建设今日国际新闻10条
  • 东莞整站优化公司火速公司天津seo数据监控
  • 兰州网站建设公司价格aso优化的主要内容
  • 成都 网站建设培训南昌seo排名公司
  • 怎么注册免费个人网站班级优化大师app下载
  • 专教做蛋糕的网站百度优化点击软件
  • 衣服网站建设策划书市场调研的内容
  • 网络商城平台怎么做灰色seo关键词排名
  • 微信商城和微网站建设网络营销顾问是做什么的
  • 做带支付平台的协会网站大概网站seo优化步骤