news 2026/8/16 22:26:11

阿里验证码Web和H5客户端V3架构接入鼠标拖拽滑块离开对话框释放鼠标时一直处于验证中问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
阿里验证码Web和H5客户端V3架构接入鼠标拖拽滑块离开对话框释放鼠标时一直处于验证中问题

Web和H5客户端V3架构接入:

现象:鼠标拖拽滑块离开对话框释放鼠标时一直处于验证中,没有触发验证。

分析:V3版本问题,V2无该问题。初步定位是因为V3滑块离开滑块弹框范围时释放鼠标,没有触发mouseup事件,导致插件没有回调验证函数;

解决思路:尝试拖拽在滑块框外面时,手动触发校验,分析getInstance方法返回实列没有对外提供方法触发校验;

思考:手动触发滑块按钮事件,看是不能触发插件的校验回调,通过JS获取滑块dom节点,研究mousedown,mosemove,mouseup, click事件,发现调用滑块的click事件可用触发插件校验回调函数(返回账号密码等信息),效果满足。

结合react工程代码整理如下:

// 获取验证码实例 const getInstance = useCallback( (instance: ICaptchaInstance) => { // 验证码弹窗Dom const sliderElement = document.getElementById('aliyunCaptcha-sliding-slider'); // 滑块按钮Dom const modalElement = document.getElementById('vnnox-care-captcha-modal'); // 先清理上一次注册的事件,避免重复绑定 if (dragCleanupRef.current) { dragCleanupRef.current(); dragCleanupRef.current = null; } if (sliderElement && modalElement) { const handleMouseDown = () => { isDraggingRef.current = true; }; const handleMouseMove = () => { // 仅用于标记拖拽过程,不在此处触发点击 if (!isDraggingRef.current) return; }; const handleMouseUp = (event: MouseEvent) => { if (!isDraggingRef.current) return; isDraggingRef.current = false; const rect = modalElement.getBoundingClientRect(); const { clientX, clientY } = event; const isInside = clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom; // 当拖拽结束(mouseup)时,如果鼠标位置已滑出父元素区域,则触发一次点击 if (!isInside) { // 添加到setTimeout中调用click,解决因调用click验证码弹框消失问题 setTimeout(()=>{ sliderElement.click(); }); } }; sliderElement.addEventListener('mousedown', handleMouseDown); window.addEventListener('mousemove', handleMouseMove); window.addEventListener('mouseup', handleMouseUp); dragCleanupRef.current = () => { sliderElement.removeEventListener('mousedown', handleMouseDown); window.removeEventListener('mousemove', handleMouseMove); window.removeEventListener('mouseup', handleMouseUp); }; } . . . }, [getErrorMessage, handleErrorWithDebounce] );
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/16 20:48:29

终极PDF对比指南:用diff-pdf轻松识别文档差异

终极PDF对比指南&#xff1a;用diff-pdf轻松识别文档差异 【免费下载链接】diff-pdf A simple tool for visually comparing two PDF files 项目地址: https://gitcode.com/gh_mirrors/di/diff-pdf 在文档管理和版本控制中&#xff0c;PDF文件的对比一直是个技术难题。d…

作者头像 李华
网站建设 2026/8/17 4:41:21

我的小爱音箱AI升级体验:从智障到智能的完美蜕变

我的小爱音箱AI升级体验&#xff1a;从智障到智能的完美蜕变 【免费下载链接】mi-gpt &#x1f3e0; 将小爱音箱接入 ChatGPT 和豆包&#xff0c;改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 作为一名智能家居爱好者&#xff0c…

作者头像 李华
网站建设 2026/8/16 6:21:34

LobeChat与Stripe支付集成:实现自动化订阅服务

LobeChat与Stripe支付集成&#xff1a;实现自动化订阅服务 在生成式AI迅速普及的今天&#xff0c;越来越多开发者不再满足于仅仅搭建一个“能对话”的聊天界面。真正的挑战在于——如何将这些智能能力转化为可持续运营的产品&#xff1f;当你的AI助手吸引了成千上万用户时&…

作者头像 李华
网站建设 2026/8/16 10:56:31

LobeChat Helm Chart配置生成

LobeChat Helm Chart配置生成 在当今大语言模型&#xff08;LLM&#xff09;快速普及的背景下&#xff0c;越来越多企业开始构建自己的AI对话系统。前端界面作为用户与模型交互的第一触点&#xff0c;其稳定性、可维护性和部署效率直接影响产品上线速度和用户体验。然而&#x…

作者头像 李华
网站建设 2026/8/15 15:42:55

一文搞懂遗传算法!!!

文章目录 文章脉络 第一部分:遗传算法的基础:向自然进化借智慧 1.1 生物进化论与遗传算法的对应关系 1.2 遗传算法的特点与适用场景 第二部分:遗传算法的核心工作原理:五大组件详解 2.1 编码:将解空间映射到基因空间 2.2 适应度函数:衡量个体优劣的“裁判” 2.3 选择操作…

作者头像 李华
网站建设 2026/8/15 15:40:50

LobeChat发货通知内容生成

LobeChat&#xff1a;构建个性化 AI 助手的现代基础设施 在大语言模型&#xff08;LLM&#xff09;能力日益普及的今天&#xff0c;真正的挑战早已不再是“有没有模型可用”&#xff0c;而是——如何让这些强大的模型真正被用起来&#xff1f; 许多团队和个人已经接入了 Open…

作者头像 李华