兼容旧版内嵌浏览器的工具栏点击与视口缩放
This commit is contained in:
+7
-5
@@ -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();
|
||||
|
||||
|
||||
@@ -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;}});
|
||||
|
||||
Reference in New Issue
Block a user