news 2026/6/10 18:09:24

阿里验证码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/6/10 12:22:33

播客批量下载终极指南:一键获取所有节目内容

还在为逐个下载播客节目而烦恼吗&#xff1f;Podcast Bulk Downloader 这款工具能够彻底解决你的痛点&#xff01;无论你是想离线收听喜爱的播客&#xff0c;还是需要批量获取音频内容进行研究&#xff0c;这个工具都能让你事半功倍。它支持图形界面和命令行两种操作方式&#…

作者头像 李华
网站建设 2026/6/10 12:23:00

小米运动自动刷步神器:2025年微信支付宝同步完美攻略

小米运动自动刷步神器&#xff1a;2025年微信支付宝同步完美攻略 【免费下载链接】mimotion 小米运动刷步数&#xff08;微信支付宝&#xff09;支持邮箱登录 项目地址: https://gitcode.com/gh_mirrors/mimo/mimotion 还在为微信运动排行榜上的名次发愁吗&#xff1f;想…

作者头像 李华
网站建设 2026/6/10 13:57:02

3个快速解决TranslucentTB任务栏透明工具启动失败的方法

3个快速解决TranslucentTB任务栏透明工具启动失败的方法 【免费下载链接】TranslucentTB 项目地址: https://gitcode.com/gh_mirrors/tra/TranslucentTB TranslucentTB是一款广受欢迎的任务栏透明工具&#xff0c;让Windows用户能够自定义美化桌面。然而在系统更新后&a…

作者头像 李华
网站建设 2026/6/10 12:23:43

深入解析ISRC编码及其在OGG文件中的应用

在音乐行业中,国际标准录音代码(ISRC)是一种独特的标识符,用于识别和管理音频录音。ISRC代码不仅有助于版权管理,还能帮助跟踪音乐在不同平台和市场中的使用情况。今天,我们将探讨ISRC代码的格式及其在OGG文件中的正确使用方式。 ISRC代码的格式 ISRC代码可以以两种形式…

作者头像 李华
网站建设 2026/6/10 11:09:42

你的测试又慢又不可靠-因为你测错了东西

GitHub 主页 关于Hyperlane框架 Hyperlane 是一个轻量级、高性能、跨平台的 Rust HTTP 服务器框架&#xff0c;构建于 Tokio 异步运行时之上。 核心特性 性能表现&#xff1a;Keep-Alive开启324,323 QPS&#xff0c;关闭51,031 QPS | 统一API&#xff1a;HTTP、WebSocket、…

作者头像 李华
网站建设 2026/6/10 3:18:08

机械革命 AX210 网卡断网断流、蓝牙断流问题解决办法

核心问题&#xff1a;​ Intel AX210 无线网卡出现的Wi-Fi频繁断线、网络波动&#xff08;断流&#xff09;以及蓝牙连接不稳定的问题。解决思路&#xff1a;​ 主要通过清理系统内冲突的隐藏虚拟网卡&#xff0c;并优化AX210网卡本身的电源管理设置来实现。具体操作步骤&#…

作者头像 李华