diff --git a/app/src/mobile/index.ts b/app/src/mobile/index.ts index facdb0abe..4dae3daf1 100644 --- a/app/src/mobile/index.ts +++ b/app/src/mobile/index.ts @@ -104,6 +104,9 @@ class App { (event.target.tagName === "INPUT" && ["email", "number", "password", "search", "tel", "text", "url", ""].includes(event.target.getAttribute("type")))) && event.target.getAttribute("readonly") !== "readonly") { editElement = event.target; + setTimeout(() => { + editElement.scrollIntoView(); + }, Constants.TIMEOUT_TRANSITION); } else if (wysisygElement && wysisygElement.getAttribute("data-readonly") === "false") { editElement = hasClosestByAttribute(event.target, "contenteditable", "true") as HTMLElement; } diff --git a/app/stage/auth.html b/app/stage/auth.html index 8d5d50941..403ca5ca3 100644 --- a/app/stage/auth.html +++ b/app/stage/auth.html @@ -574,6 +574,20 @@ new WebSocket((window.location.protocol === 'https:' ? 'wss' : 'ws') + '://' + window.location.host + '/ws?app=siyuan&id=auth') } init(); + window.addEventListener("click", (event) => { + if (event.target.tagName === "INPUT" && + ["email", "number", "password", "search", "tel", "text", "url", ""].includes(event.target.getAttribute("type")) && + event.target.getAttribute("readonly") !== "readonly") { + setTimeout(() => { + event.target.scrollIntoView(); + }, Constants.TIMEOUT_TRANSITION); + if (window.JSAndroid && window.JSAndroid.showKeyboard) { + window.JSAndroid.showKeyboard(); + } else if (window.JSHarmony && window.JSHarmony.showKeyboard) { + window.JSHarmony.showKeyboard(); + } + } + })