From 7900145ba93f3995e77dc49e3d124213ce7f561c Mon Sep 17 00:00:00 2001 From: lkddi Date: Sat, 25 Apr 2026 13:33:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E7=AB=99=E9=95=BF=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E9=AA=8C=E8=AF=81=E7=A0=81=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/js/admin-login.js | 39 ++++++++++++++++++++++ resources/views/admin/auth/login.blade.php | 11 ++---- vite.config.js | 1 + 3 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 resources/js/admin-login.js diff --git a/resources/js/admin-login.js b/resources/js/admin-login.js new file mode 100644 index 0000000..fc3f918 --- /dev/null +++ b/resources/js/admin-login.js @@ -0,0 +1,39 @@ +// 站长登录页交互入口,集中管理验证码刷新,避免在 Blade 中暴露全局函数。 + +let adminLoginControlsBound = false; + +/** + * 为验证码图片追加随机参数,强制浏览器重新请求图片。 + * + * @param {HTMLImageElement} captchaImage + * @returns {void} + */ +function refreshCaptchaImage(captchaImage) { + const refreshUrl = captchaImage.getAttribute("data-captcha-refresh-url") ?? "/captcha/default"; + captchaImage.src = `${refreshUrl}?${Math.random()}`; +} + +/** + * 绑定站长登录页验证码刷新事件。 + * + * @returns {void} + */ +function bindAdminLoginControls() { + if (adminLoginControlsBound || typeof document === "undefined") { + return; + } + + adminLoginControlsBound = true; + + document.addEventListener("click", (event) => { + if (!(event.target instanceof HTMLImageElement)) { + return; + } + + if (event.target.hasAttribute("data-captcha-refresh-url")) { + refreshCaptchaImage(event.target); + } + }); +} + +bindAdminLoginControls(); diff --git a/resources/views/admin/auth/login.blade.php b/resources/views/admin/auth/login.blade.php index 543ceef..d7ce90e 100644 --- a/resources/views/admin/auth/login.blade.php +++ b/resources/views/admin/auth/login.blade.php @@ -522,7 +522,7 @@
站长登录验证码 + data-captcha-refresh-url="/captcha/default" title="点击刷新验证码">
@@ -552,14 +552,7 @@ - + @vite('resources/js/admin-login.js') diff --git a/vite.config.js b/vite.config.js index 95b2926..e03b379 100644 --- a/vite.config.js +++ b/vite.config.js @@ -7,6 +7,7 @@ export default defineConfig({ laravel({ input: [ "resources/css/app.css", + "resources/js/admin-login.js", "resources/js/app.js", "resources/js/chat.js", "resources/js/effects.js",