chrome 区域外事件捕捉实现
虽然 setCapture() 方法在 Google Chrome 中不受支持,并且 window.captureEvents() 已被废弃,但仍有方法可以实现进度条拖动至区域外后继续触发鼠标移动事件。
以下代码段展示了一种使用 JavaScript 事件监听器和属性的方法:
const button = document.querySelector('button'); button?.addEventListener('mousedown', handleMoveStart); let startPoint: { x: number; y: number } | undefined; let originalOnSelectStart: Document['onselectstart'] = null; function handleMoveStart(e: MouseEvent) { e.stopPropagation(); if (e.ctrlKey || [1, 2].includes(e.button)) return; window.getSelection()?.removeAllRanges(); e.stopImmediatePropagation(); window.addEventListener('mousemove', handleMoving); window.addEventListener('mousedown', handleMoveEnd); originalOnSelectStart = document.onselectstart; document.onselectstart = () => false; startPoint = { x: e.x, y: e.y }; } function handleMoving(e: MouseEvent) { if (!startPoint) return; // DO Something } function handleMoveEnd(e: MouseEvent) { window.removeEventListener('mousemove', handleMoving); window.removeEventListener('mousedown', handleMoveEnd); startPoint = undefined; if (document.onselectstart !== originalOnSelectStart) { document.onselectstart = originalOnSelectStart; } }
登录后复制
当用户在进度条元素上按下鼠标按钮时,handleMoveStart 函数会触发。它会阻止默认的 onselectstart 事件并捕捉鼠标移动事件,允许用户将进度条拖动到区域外。
handleMoving 函数处理用户鼠标移动事件,执行所需的逻辑(例如更新进度)。
handleMoveEnd 函数在用户释放鼠标按钮时触发,它将删除鼠标移动事件监听器并恢复原始的 onselectstart 事件行为。
以上就是Chrome 区域外事件捕捉:如何在不支持 setCapture() 的情况下实现进度条拖动?的详细内容,更多请关注抖狐科技其它相关文章!
-
支付宝怎么关闭钱管家
关闭支付宝钱管家攻略在使用支付宝时,不少用户会利用钱管家管理资金,提升资金使用效率。但如果因个人需求变化需要关闭该功能,却不知晓操作方法。php小编香蕉特此带来详细的钱管家关闭攻略,帮助有需要的小伙伴...
-
ios支付宝会员怎么关闭自动续费
在 ios 支付宝中关闭会员自动续费的步骤:1. 打开支付宝 app;2. 点击“我的”;3. 选择“服务与会员”;4. 找到要关闭续费的会员;5. 点击“管理”;6. 选择“自动续费”;7. 点击“...
-
微信怎么群发消息 群发消息方法
如何高效地进行微信群发消息?php小编新一为您带来了一篇综合指南,详细介绍了群发消息的最佳实践和技术方法。本文将为您解答:群发消息的优势和限制不同群发方式的比较如何创建和发送有效的群发消息如何避免群发...
-
抖音怎么自定义粉丝团名字 自定义粉丝团名字方法
说到粉丝团,大家自然而然会想到如何扩大粉丝团。但如果你已经有了很多粉丝,如何给自己的粉丝团取一个合适的名字呢?php小编香蕉今天就为大家带来抖音自定义粉丝团名字的方法,想给自己的粉丝团起一个独一无二的...
-
python爬虫怎么pdf
python 爬虫下载 pdf 的步骤如下:安装 requests、beautifulsoup4 和 pdfkit 库获取 pdf url发送 http 请求获取 pdf 内容解析 html 提取 p...