如何让瞄准训练器按钮仅响应鼠标左键,屏蔽回车键触发防作弊
漏洞原因
原生<button>元素在获得焦点状态下,按下回车键、空格键会默认触发click事件,你遇到的作弊场景就是按住鼠标左键让按钮保持聚焦,重复按回车键即可连续触发点击计数。
具体实现方案
1. 修改HTML按钮属性,从根源屏蔽键盘触发
给目标按钮添加2个属性,禁止按钮被键盘聚焦、屏蔽所有键盘事件:
<!-- 把原来的按钮代码替换成下面的内容 --> <button id="btn" class="btn" tabindex="-1" onkeydown="return false"><b>Click me</b></button>
tabindex="-1":让按钮无法通过Tab键等键盘操作获得焦点onkeydown="return false":直接拦截所有按钮上的键盘触发事件
2. 修改JS事件绑定逻辑,仅响应鼠标左键点击
删除原来按钮的click事件绑定,替换为mousedown事件,仅当触发源为鼠标左键时才执行计数逻辑。
找到你JS代码里的这三行:
b.addEventListener("click", change); b.addEventListener("click", plus); b.addEventListener("click", misscmines);
替换为以下代码:
// 移除原有click事件绑定,避免重复触发 b.removeEventListener("click", change); b.removeEventListener("click", plus); b.removeEventListener("click", misscmines); // 绑定鼠标按下事件,仅响应左键 b.addEventListener("mousedown", function(e) { // e.button === 0 代表是鼠标左键触发 if(e.button === 0) { change(); plus(); misscmines(); } }); // 额外拦截按钮的默认click事件,防止其他未知触发源 b.addEventListener("click", function(e) { e.preventDefault(); e.stopPropagation(); });
修改完成后,按钮就只会响应真实的鼠标左键点击操作,完全屏蔽包括回车键在内的所有键盘触发方式,即可修复该作弊漏洞。
内容的提问来源于stack exchange,提问作者Mfa
相关产品推荐
相关产品推荐

