From 742e2fd66d997e6719fa3df3ef152065339a2e20 Mon Sep 17 00:00:00 2001 From: shuaiplus <2327005759@qq.com> Date: Fri, 30 May 2025 22:36:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=85=A8=E5=B1=80=E6=8B=96?= =?UTF-8?q?=E6=8B=BD=E6=96=87=E4=BB=B6=E8=87=AA=E5=8A=A8=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E9=99=84=E4=BB=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/js/main.js | 45 ++++++++++++++++++++++++++++++++++++ client/js/util.fileUpload.js | 3 +++ 2 files changed, 48 insertions(+) diff --git a/client/js/main.js b/client/js/main.js index ca7e412..56c3613 100644 --- a/client/js/main.js +++ b/client/js/main.js @@ -268,3 +268,48 @@ window.addEventListener('DOMContentLoaded', () => { }); } }); + +// 全局拖拽文件自动打开附件功能 +// Global drag file to auto trigger attach button +let dragCounter = 0; +let hasTriggeredAttach = false; + +// 监听文件上传模态框关闭事件,重置拖拽标志位 +window.addEventListener('fileUploadModalClosed', () => { + hasTriggeredAttach = false; +}); + +document.addEventListener('dragenter', (e) => { + dragCounter++; + if (!hasTriggeredAttach && e.dataTransfer.items.length > 0) { + // 检查是否有文件 + for (let item of e.dataTransfer.items) { + if (item.kind === 'file') { + // 自动点击附件按钮 + const attachBtn = document.querySelector('.chat-attach-btn'); + if (attachBtn) { + attachBtn.click(); + hasTriggeredAttach = true; + } + break; + } + } + } +}); + +document.addEventListener('dragleave', (e) => { + dragCounter--; + if (dragCounter === 0) { + hasTriggeredAttach = false; + } +}); + +document.addEventListener('dragover', (e) => { + e.preventDefault(); +}); + +document.addEventListener('drop', (e) => { + e.preventDefault(); + dragCounter = 0; + hasTriggeredAttach = false; +}); diff --git a/client/js/util.fileUpload.js b/client/js/util.fileUpload.js index c354d5e..a4cd3ce 100644 --- a/client/js/util.fileUpload.js +++ b/client/js/util.fileUpload.js @@ -97,6 +97,9 @@ function hideUploadModal() { uploadModal = null; selectedFiles.clear(); onSendCallback = null; + + // 通知主模块重置拖拽标志位 + window.dispatchEvent(new CustomEvent('fileUploadModalClosed')); }, 300); }