From cfd3fb15ccca13c0dd94aca081607aaabdef95af Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Fri, 30 Oct 2026 12:57:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=BC=E5=AE=B9=E6=97=A7=E7=89=88=E5=86=85?= =?UTF-8?q?=E5=B5=8C=E6=B5=8F=E8=A7=88=E5=99=A8=E7=9A=84=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E6=A0=8F=E7=82=B9=E5=87=BB=E4=B8=8E=E8=A7=86=E5=8F=A3=E7=BC=A9?= =?UTF-8?q?=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/js/chat.js | 12 +++++++----- tests/frontend/chat.test.cjs | 10 ++++++---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/static/js/chat.js b/static/js/chat.js index 8ef48a9..d8fac14 100644 --- a/static/js/chat.js +++ b/static/js/chat.js @@ -1724,7 +1724,7 @@ function autoGrow(){ } inputDom.style.height = "auto"; const viewport = window.visualViewport; - const height = viewport && viewport.scale === 1 ? viewport.height : window.innerHeight; + const height = viewport && Math.abs(viewport.scale - 1) < 0.01 ? viewport.height : window.innerHeight; const limit = isNarrow() && height > 0 ? Math.min(140, Math.max(44, Math.floor(height / 4))) : 140; inputDom.style.height = Math.min(inputDom.scrollHeight, limit) + "px"; } @@ -1843,10 +1843,12 @@ window.addEventListener('pageshow', scheduleChatViewport); inputDom.addEventListener('focus', scheduleChatViewport); inputDom.addEventListener('blur', scheduleChatViewport); // Let toolbar clicks complete before blur changes the keyboard and composer layout. -document.querySelector('.composer').addEventListener('pointerdown', function(event){ - if(event.button === 0 && document.activeElement === inputDom && event.target.closest('button')){ - event.preventDefault(); - } +['pointerdown', 'mousedown'].forEach(function(name){ + document.querySelector('.composer').addEventListener(name, function(event){ + if(event.button === 0 && document.activeElement === inputDom && event.target.closest('button')){ + event.preventDefault(); + } + }); }); syncChatViewport(); diff --git a/tests/frontend/chat.test.cjs b/tests/frontend/chat.test.cjs index ef58c0c..44382bb 100644 --- a/tests/frontend/chat.test.cjs +++ b/tests/frontend/chat.test.cjs @@ -717,10 +717,12 @@ test('mobile quick questions keep the keyboard closed and composer controls fini await app.context.window.fillInput('快捷咨询');await flush(); assert.equal(input.focusCalls.length,0); input.focus(); - for(const name of ['send-button','voice-toggle','emoji-toggle','upload-btn']){ - let prevented=false; - app.element('.composer').listeners.pointerdown({button:0,target:{closest:()=>app.element(name)},preventDefault(){prevented=true;}}); - assert.ok(prevented); + for(const event of ['pointerdown','mousedown']){ + for(const name of ['send-button','voice-toggle','emoji-toggle','upload-btn']){ + let prevented=false; + app.element('.composer').listeners[event]({button:0,target:{closest:()=>app.element(name)},preventDefault(){prevented=true;}}); + assert.ok(prevented); + } } let blockedTextSelection=false; app.element('.composer').listeners.pointerdown({button:0,target:{closest:()=>null},preventDefault(){blockedTextSelection=true;}});