您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Ajoute un délai anti-misclick sur Lichess avec un bouton d'activation
// ==UserScript== // @name Lichess Anti-Misclic // @namespace http://tampermonkey.net/ // @version 2 // @description Ajoute un délai anti-misclick sur Lichess avec un bouton d'activation // @author yglsan // @match https://lichess.org/* // @grant GM_setValue // @grant GM_getValue // @license OpenGPL 3.0 // ==/UserScript== (function() { 'use strict'; let selectedSquare = null; let lastClickTime = 0; const clickDelay = 750; // Délai en millisecondes (750ms = 0.75s) const highlightColor = "rgba(255, 0, 0, 0.5)"; // Couleur de la case sélectionnée let antiMisclickEnabled = GM_getValue("antiMisclickEnabled", true); // Charge l'état enregistré // Fonction pour basculer l'état de la protection anti-misclick function toggleMisclickProtection() { antiMisclickEnabled = !antiMisclickEnabled; GM_setValue("antiMisclickEnabled", antiMisclickEnabled); updateButton(); } // Mise à jour du texte et couleur du bouton function updateButton() { const button = document.getElementById("toggleMisclickButton"); if (!button) return; button.innerText = antiMisclickEnabled ? "🔴 Anti-Misclick ON" : "⚫ Anti-Misclick OFF"; button.style.backgroundColor = antiMisclickEnabled ? "#28a745" : "#dc3545"; // Vert pour ON, Rouge pour OFF } // Fonction pour injecter Bootstrap et ajouter le bouton d'activation/désactivation function injectBootstrapAndButton() { // Ajouter Bootstrap si non déjà présent if (!document.querySelector('link[href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"]')) { const link = document.createElement('link'); link.rel = 'stylesheet'; link.href = 'https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css'; document.head.appendChild(link); } // Création du bouton flottant const button = document.createElement("button"); button.id = "toggleMisclickButton"; button.innerText = antiMisclickEnabled ? "🔴 Anti-Misclick ON" : "⚫ Anti-Misclick OFF"; button.style.position = "fixed"; button.style.bottom = "20px"; button.style.right = "20px"; button.style.zIndex = "1000"; button.style.padding = "10px 15px"; button.style.border = "none"; button.style.borderRadius = "10px"; button.style.backgroundColor = antiMisclickEnabled ? "#28a745" : "#dc3545"; button.style.color = "white"; button.style.fontSize = "14px"; button.style.cursor = "pointer"; button.style.boxShadow = "2px 2px 10px rgba(0,0,0,0.3)"; button.onclick = toggleMisclickProtection; document.body.appendChild(button); } // Appel à la fonction d'injection de Bootstrap et du bouton document.addEventListener("DOMContentLoaded", injectBootstrapAndButton); // Écouteur de clics sur l'échiquier document.addEventListener('click', (event) => { if (!antiMisclickEnabled) return; // Si désactivé, ne fait rien const now = Date.now(); const square = event.target.closest('.square'); if (!square) return; if (selectedSquare) { if (now - lastClickTime < clickDelay) { console.log("⏳ Misclick détecté : mouvement annulé !"); resetSelection(); return; } console.log(`✅ Coup validé : ${selectedSquare.dataset.san} -> ${square.dataset.san}`); resetSelection(); } else { selectedSquare = square; lastClickTime = now; highlightSquare(selectedSquare); console.log(`🎯 Pièce sélectionnée sur ${square.dataset.san}`); } }); // Mise en surbrillance de la case sélectionnée function highlightSquare(square) { square.style.backgroundColor = highlightColor; setTimeout(() => { if (square === selectedSquare) { square.style.backgroundColor = ""; } }, clickDelay); } // Réinitialisation de la sélection function resetSelection() { if (selectedSquare) { selectedSquare.style.backgroundColor = ""; } selectedSquare = null; } // Mise à jour de l'état du bouton à chaque changement de l'activation updateButton(); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址