首页
学习
活动
专区
圈层
工具
发布

移动端那些戳中你痛点的软键盘问题及解决方法

这个参考了朱雷大佬提供的这个文章:WebView上软键盘的兼容方案[1] IOS 软键盘弹起表现 在 IOS 上,输入框(input、textarea 或 富文本)获取焦点,键盘弹起,页面(webview...Android 软键盘弹起表现 同样,在 Android 上,输入框获取焦点,键盘弹起,但是页面(webview)高度会发生改变,一般来说,高度为可视区高度(原高度减去软键盘高度),除了因为页面内容被撑开可以产生滚动...IOS 软键盘收起表现 触发软键盘上的“收起”按钮键盘或者输入框以外的页面区域时,输入框失去焦点,软键盘收起。 Android 软键盘收起表现 触发输入框以外的区域时,输入框失去焦点,软键盘收起。...但是,触发键盘上的收起按钮键盘时,输入框并不会失去焦点,同样软键盘收起。 ? ? 2、为什么fixed会失效 既然ios键盘弹起时,页面会上移,那么为什么fixed会失效呢。...为了解决这个问题,ios设计者们让webview上滚,但滚动的结果有些出乎意料:输入框本身可以理解地滚动到了实际可视区域的正中间,但 fixed 元素不会发生重新计算,而是保持原来的相对位置,跟着输入框一起被上推

10.1K30

【H5】209-可能这些是你想要的H5软键盘兼容方案

在IOS12 上,微信版本 v6.7.4 及以上,输入框获取焦点,键盘弹起,页面(webview)整体往上滚动,当键盘收起后,不回到原位,导致键盘原来所在位置是空白的。...IOS 软键盘收起表现 触发软键盘上的“收起”按钮键盘或者输入框以外的页面区域时,输入框失去焦点,软键盘收起。 Android 软键盘收起表现 触发输入框以外的区域时,输入框失去焦点,软键盘收起。...当输入框位于页面下部位置时,在 IOS 上,会将 webview 整体往上滚一段距离,使得该获取焦点的输入框自动处于可视区,而在 Android 则不会这样,它只会改变页面高度,而不会去滚动到当前焦点元素到可视区...('contenteditable') // 输入框、textarea或富文本获取焦点后没有将该元素滚动到可视区 if (activeElement.tagName == 'INPUT' ||...了解软键盘弹起页面在 IOS 和 Android 上的表现差异是前提,其次是将焦点元素滚动到可视区,同时要考虑到第三方输入法和某些浏览器上的差别。

4.4K12
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    小程序-云开发-如何对敏感词进行过滤即内容安全的检测(下)

    作者 | 随笔川迹 ID | suibichuanji 前言 撰文:川川 您将在本文中学习另外一种方式如何在小程序中对一段文本进行检测是否含有违规内容 云函数中进行简单的配置一下,就可以实现文本内容的校验...小程序端进行文本内容的弱校验,减少API的请求 如何将涉及违规的文本内容用*号代替,进行过滤处理 云函数调用方式的优点(推荐使用) 本文重点在于 学会如何在小程序云开发中的云函数后端进行配置,实现文本内容的校验...(输入一段违规的文本进行校验,点击图片可查看) 当您输入符合规则的文本时,便会返回成功时的状态码,以及对应合规的信息提示 ?...|猪|笨|屁|麻痹|滚犊子|婊/gm // pages/msgSecCheck/msgSecCheck.js Page({ /** * 页面的初始数据 */ data: {...,对内容进行检测,若内容合规,就插入数据库,不合规,就不让走下一步的 对于违规词的手动收集,其实也是可以单独的弄一个接口的,在小程序端哪里需要检验的,哪里触发事件,就在哪里发起请求就可以的 对于涉及到复杂的页面

    3.5K10

    可能这些是你想要的H5软键盘兼容方案

    在IOS12 上,微信版本 v6.7.4 及以上,输入框获取焦点,键盘弹起,页面(webview)整体往上滚动,当键盘收起后,不回到原位,导致键盘原来所在位置是空白的。...IOS 软键盘收起表现 触发软键盘上的“收起”按钮键盘或者输入框以外的页面区域时,输入框失去焦点,软键盘收起。 Android 软键盘收起表现 触发输入框以外的区域时,输入框失去焦点,软键盘收起。...当输入框位于页面下部位置时,在 IOS 上,会将 webview 整体往上滚一段距离,使得该获取焦点的输入框自动处于可视区,而在 Android 则不会这样,它只会改变页面高度,而不会去滚动到当前焦点元素到可视区...('contenteditable') // 输入框、textarea或富文本获取焦点后没有将该元素滚动到可视区 if (activeElement.tagName == 'INPUT' ||...了解软键盘弹起页面在 IOS 和 Android 上的表现差异是前提,其次是将焦点元素滚动到可视区,同时要考虑到第三方输入法和某些浏览器上的差别。

    8.6K20

    【译】W3C WAI-ARIA最佳实践 -- 布局

    面包屑 面包屑包含当前页面的父页面的链接列表,该列表是层级顺序的。它可以帮助用户在网站或网络应用程序中找到自己的位置。面包屑通常水平放置在页面的主要内容之前。...Home: 将焦点移动到包含焦点的行中的第一个单元格。可选地,如果网格具有单列或每行少于三个单元格,则焦点可以替代地移动到网格中的第一单元格。 End: 将焦点移动到包含焦点的行中的最后一个单元格。...Enter: 禁用网格导航以及: 如果单元格包含可编辑内容,将焦点放置在输入框中,例如 textbox。...如果输入框是个单行文本框,连续按 Enter ,会重置网格导航功能,或移动焦点到附近单元格的输入框中。 如果单元格包含一个或多个组件,将焦点放置在第一个组件上。...F2: 如果单元格包含可编辑的内容,则会将焦点放在输入字段中,例如 textbox。随后按下 F2 恢复网格导航功能。 如果单元格包含一个或多个组件,将焦点放置在第一个组件上。

    8.2K50

    做好内容安全检测,和风险说「再见」!(下)

    本文重点在于: 学会如何在小程序云开发中的云调用进行配置,实现文本内容的校验。 小程序端在什么时机进行弱校验,为什么有必要这么做。...(输入一段违规的文本进行校验,点击图片可查看) 当您输入符合规则的文本时,便会返回成功时的状态码,以及对应合规的信息提示。...违规内容 强制用户不能输入,发布,或者评论等 针对敏感词汇,用*号进行替代 (针对敏感词汇,用***号进行替代) 那这个究竟是怎么实现的呢事件的触发应该是在失去焦点的时候,就进行常规自定义文本内容校验...|笨|屁|麻痹|滚犊子|婊/gm // pages/msgSecCheck/msgSecCheck.js Page({ /** * 页面的初始数据 */ data: { textareaVal...其实复杂的内部工作,都已经集成到wx-server-sdk当中了的,您只需要根据云开发官方内置的接口,传入所需要检测的字段,它就会给您返回一个结果。

    1.5K10

    【译】W3C WAI-ARIA最佳实践 -- 表单

    目标资源可以是外部的的,也可以是本地的,例如,当前页面内、页面外、应用。 NOTE 作者们强烈建议使用原生语言的链接元素,例如一个具有 href 属性的HTML A 元素。...+ Up Arrow: - 当焦点在一个 menu 上时,将焦点移动到上一个项目,可选的,从第一个项目移动到最后一个。...+ Left Arrow: - 当焦点在一个menubar上时,将焦点移动到上一个项目,可选的,从第一个项目移动到最后一个。...例如,激活对话框中的取消按钮将焦点返回到打开对话框的按钮。但是,如果对话框是确认删除其来自页面的操作,焦点将会根据逻辑移动到一个新的上下文。...任何其他字符输入不会更改文本字段的内容和按钮的值。 NOTE 操作过程中焦点仍在文本字段上。 适用于设备平台的标准单行文本编辑键: 包括输入键,光标移动,选择和文本操作。

    10.6K30

    简单了解下无障碍设计模式

    添加到原生元素上的额外的声音(屏幕阅读器能够正确的翻译原生元素) 标记用户界面元素 给输入控件和其他元素添加描述,供屏幕阅读器等设备可以进行朗读 动效 Material design 使用动效来引导视图之间的焦点...视觉反馈(如标签、颜色和图标)和触摸反馈向用户显示了可用的 UI。 导航应该具有清晰的任务流程,和最少的步骤。在频繁使用的任务上,应该实现聚焦控制、或控制键盘和读取焦点的功能。...用户也可以在屏幕上向前或向后滑动来移动焦点,来从上到下线性地阅读页面。这允许用户在某些元素上进行训练。在 TalkBack 中,这称为线性导航。...错误示例 当把重要的操作嵌入到其他内容中时,就不清楚什么是页面中最重要的元素。 焦点顺序 输入焦点应该按照视觉布局的顺序排列,从屏幕顶部到底部。它应该从最重要的项目到最不重要的项目进行遍历。...确定以下的焦点和移动方式: 元素接收焦点的顺序 元素分组的方式 拥有焦点的元素消失时,焦点移动到哪里 通过视觉指示器和辅助文本的组合,来阐明焦点的位置。

    6.2K40

    梳理下常见的不冒泡事件

    •blur 不冒泡 ❌•focus 不冒泡 ❌•focusin•focusout 要注意 blur 事件和 focus 事件都是不冒泡的,因获取和失去焦点本身就是针对这个元素的。...直接移动到元素C,常见于失去焦点再获得焦点的情况,事件触发顺序见下表: Event Type Element Notes mousemove 直接移动到元素C mouseover C mouseenter...那么则是 keydown 事件、beforeinput 事件和 input 事件 Keyboard 全部是冒泡事件 •keydown•keyup Composition 事件 该事件是复合事件,用来处理输入法编辑器的输入...该事件包括三个: •compositionstart 输入法编辑器打开状态,准备输入•compositionupdate 向输入字段插入新字符时触发•compositionend 输入法编辑器关闭时触发...•等等 html5 的 online offline、notification、push 等事件也都是不冒泡的;针对特定资源的 Progress 事件如 abort、load、progress、timeout

    1.5K30

    H5页面前端开发常见的兼容性问题解决方法

    IOS系统下输入框光标高度不正常 问题描述:input输入框光标,在安卓手机上显示没有问题,但是在苹果手机上当点击输入的时候,光标的高度和父盒子的高度一样,看起来很怪异。...IOS键盘唤起,键盘收起以后页面不归位 问题描述:输入内容,软键盘弹出,页面内容整体上移,但是键盘收起,页面内容不下滑。 解决办法:在输入框失失去焦点的时候添加一个事件,让页面回滚。...安卓弹出的键盘遮盖文本框 问题描述:安卓微信H5弹出软键盘后挡住input输入框,看不到输入的字符。如下左图是期待唤起键盘的时候样子,右边是实际唤起键的样子。...document.activeElement.scrollIntoView(); }, 500); } } Element.scrollIntoView()方法让当前的元素滚动到浏览器窗口的可视区域内...Element.scrollIntoViewIfNeeded()方法也是用来将不在浏览器窗口的可见区域内的元素滚动到浏览器窗口的可见区域,但如果该元素已经在浏览器窗口的可见区域内,则不会发生滚动。

    3.2K11

    JavaScript(十三)

    在重置表单时,所有表单字段都会恢复到页面刚加载完毕时的初始值。如果某个字段的初始值为空,就会恢复为空; 而带有默认值的字段,也会恢复为默认值。...表单字段 可以像访问页面中的其他元素一样,使用原生 DOM 方法访问表单元素。此外,每个表单都有 elements 属性,该属性是表单中所有元素的集合。...,表示当前字段是否只读 type: 当前字段的类型,如 “checkbox”、”radio” 等等 value: 当前字段将被提交给服务器的值 共有的表单字段方法 每个表单字段都有两个方法: focus...在支持这个属性的浏览器中,只要设置这个属性,不用 JavaScript 就能自动把焦点移动到相应字段。...共有的表单字段事件 所有表单字段都支持下列 3 个事件: blur: 当前字段失去焦点时触发 focus: 当前字段获得焦点时触发 change: 对于 input 和 textarea 元素,在它们失去焦点且

    4.9K20

    JavaScript(十二)

    事件流 ---- 最早的两大浏览器厂商(IE 及 Netscape)在如何在看待浏览器事件方面还是一致的。比如说,如果你单击了某个按钮,他们都认为单击事件不仅仅发生在按钮上。...事件处理程序 ---- 事件就是用户或浏览器自身执行的某种动作。如 click、load 和 mouseover,都是事件的名字。而响应某个事件的函数就叫做事件处理程序(或事件监听器)。...UI(User Interface,用户界面)事件,当用户与页面上的元素交互时触发 焦点事件,当元素获得或失去焦点时触发 鼠标事件,当用户通过鼠标在页面上执行操作时触发 滚轮事件,当使用鼠标滚轮(或类似设备...)时触发 文本事件,当在文档中输入文本时触发 键盘事件,当用户通过键盘在页面上执行操作时触发 UI 事件 UI 事件指的是那些不一定与用户操作有关的事件。...而利用这个事件最多的情况是清除引用,以避免内存泄漏。 焦点事件 焦点事件会在页面获得或失去焦点时触发。

    4.1K20

    【Web APIs】JavaScript 操作元素 ⑧ ( DOM 操作元素 案例 | 获取焦点 onfocus 事件 | 失去焦点 onblur 事件 | 获取设置 HTML 页面背景颜色 )

    一、案例需求 实现如下效果 , 默认状态下 , 表单显示灰色提示字体 , 点击表单输入内容是黑色字体的 ; 二、案例核心要点 1、获取焦点事件 - onfocus 事件 在 JavaScript 中 ,...当 DOM 元素 获得焦点时 , 该 DOM 元素上绑定的 onfocus 事件被触发 ; 绑定该 onfocus 事件的元素 一般都是 input 表单元素 ; 如 : 当 用户 点击输入框 或 通过键盘切换到输入框时...- onblur 事件 在 JavaScript 中 , 当 DOM 元素 失去焦点时 , 该 DOM 元素上绑定的 onblur 事件被触发 ; 如 : 用户从 输入框 移动到 页面的其他部分 或...按下 Tab 键 移动 焦点时 , 该事件会被触发 ; 绑定 onblur 事件的方法 : 设置 onblur 属性 : 可以通过 DOM 操作 , 给元素添加 onblur 属性 , 来指定当焦点集中在元素上时要执行的...获取 / 设置 HTML 页面背景颜色 document.body.style.backgroundColor 属性 可 用于 设置 或 获取 HTML 页面 的背景颜色 ; 设置背景颜色示例 : document.body.style.backgroundColor

    1.2K10

    终于等到你,新的虚拟键盘API 即将到来,快来先睹为快吧!

    屏幕中间有一个输入框。 当输入框处于活动状态时,结账按钮将位于虚拟键盘下方,因此被隐藏起来。 我们可以轻松地通过虚拟键盘API来解决这个问题。...无法滚动到页面的最底部 当视口底部有一个带有 position: fixed 的项目时,我们通常会添加 padding-bottom 来偏移页面,使用户可以滚动到最底部。...请看下图: 为了更好地展示问题,如下动画所示: 为了解决这个问题,我们需要检测输入是否处于焦点状态,并根据此进行相应的 padding-bottom 更改。...让我们举个简单的例子。我们有一个联系页面,其中包含长内容和表单输入。如果我们选择让虚拟键盘覆盖页面内容,那么将无法滚动到表单的最后。 在这种情况下,我不建议键盘覆盖内容。明智地使用它。...当用户激活输入字段时,它会显示如下: 注意垂直空间太小。怎么办?通过混合比较功能和虚拟键盘API,我们可以在键盘显示时隐藏导航。 这是实现此功能的CSS代码。

    1.1K20

    【JS】310- 使用 focusout 事件,解决 iOS 键盘收起不归位问题

    此时,实际上页面顶部是离开了我们的视口一部分距离的(我们看到界面中消失了一行输入框)。 键盘收起时页面无法还原归位 然而当用户输入完成关闭键盘后,键盘虽然收起了,但页面位置却不会还原。...要解决这个问题,我们可以在用户光标离开输入框的时候,调用 window.scrollTo(0, 0) 来把页面滚动到跟视口顶部对齐,从而实现页面归位的效果。...因为我们在上述两个输入框之间切换时,页面会首先触发 电话输入框 的 blur事件,接着触发 姓名输入框 的 focus 事件。...这样的话,在 blur 时会触发我们的 window.scrollTo(0,0) 导致页面往下滚一下,接着 姓名输入框 聚焦,于是键盘继续弹起---这导致页面再次向上移动。...&& e.target && e.target.tagName && e.target.tagName.toLowerCase() === 'input') { // 输入框失去焦点

    3.8K10

    Python 自动化指南(繁琐工作自动化)第二版:二十、使用 GUI 自动化控制键盘和鼠标

    这些按键的作用取决于哪个窗口是活动的,哪个文本字段具有焦点。您可能希望首先向所需的文本字段发送鼠标单击,以确保它获得焦点。...调用pyautogui.mouseInfo()启动的应用可以帮你算出具体的鼠标坐标。您只需要知道第一个文本字段的坐标。点击第一个字段后,只需按下Enter即可将焦点移动到下一个字段。...这将使您不必为每个字段计算要单击的 x 和 y 坐标。 以下是在表单中输入数据的步骤: 将键盘焦点放在name字段上,这样按键就可以在该字段中键入文本。 键入一个名称,然后按下Enter。...将'\t'字符添加到传递给write()的字符串的末尾,以模拟按下TAB 键,这将键盘焦点移动到下一个字段,最大的恐惧。...第五步:提交表单,等待 您可以通过将person['comments']作为一个参数传递来使用write()函数填充附加注释字段。您可以键入一个附加的'\t'来将键盘焦点移动到下一个字段或提交按钮。

    10.4K51

    【Web技术】850- 深入了解页面生命周期API

    FROZEN--CPU暂停的生命周期状态(隐藏的网页会被冻结以节约资源)。 如果一个网页被隐藏了很久,而用户没有关闭网页,浏览器会将其冻结,并将网页移动到这个状态。...DISCARDED - 为了节省资源,将冻结状态移动到Discarded状态。 假设一个网页长时间处于冻结状态,在这种情况下,浏览器会自动将网页卸载到丢弃状态,以节省资源。...ACTIVE - 页面可见并有输入焦点。 PASSIVE - 页面可见,但没有输入焦点。 HIDDEN - 页面不可见(也没有冻结)。 TERMINATED - 页面被卸载并从内存中清除。...这里最重要的是确定当应用程序达到每个状态时,哪些需要保留,哪些需要停止。 ACTIVE状态--由于用户在页面上是完全活跃的,所以你的网页应该完全响应用户的输入。...好了,现在我们知道在每个状态下要做什么了,让我们看看如何在我们的应用程序中捕获每个状态。 如何在代码中捕获生命周期状态?

    1.7K20

    浅谈JavaScript的事件(事件类型)

    DOM3级的事件类型主要包括:UI事件,用户与页面上的元素交互时触发;焦点事件,元素获得或失去焦点触发;鼠标事件,用户通过鼠标在页面上执行操作时触发;滚轮事件,使用鼠标滚轮时触发;文本事件,当在文档中输入文本时触发...焦点事件   焦点事件会在页面获得或失去焦点时触发。利用这些事件,并于document.hasFocus()方法和document.activeElement属性配合,可以知晓用户在页面上的行为。...当用户在页面上由一个元素移动到另一个元素事件触发的顺序为:focusout事件,在失去焦点的元素上触发;focusin事件,在获得焦点的元素上触发;blur事件,在失去焦点的元素上触发;focus事件,...,用于处理IME的输入序列。...IME可以让用户输入在键盘上找不到的字符。IME通常需要同时多个字符来确定一个字符,比如中文的输入。

    2.4K50

    让Form在加载后自动获得焦点

    需求 加载后让第一个输入框或者焦点是个很基本的功能,典型的如“登录”对话框。...一般来说“登录”对话框加载后“用户名”应该马上获得焦点,用户只需输入用户名,点击Tab,再输入密码,点击回车就完成了登录操作。...Setter Property="local:FocusService.IsAutoFocus" Value="True" /> MoveFocus 在FrameworkElement上将...IsAutoFocus附加属性设置为True的话(False不处理),这个FrameworkElement会在Loaded事件调用MoveFocus函数将键盘焦点移动到自身VisualTree中第一个可以接受焦点的元素上...两种焦点类型 作为补充知识,这篇文章将简单介绍一下WPF的焦点。 3.1 键盘焦点 键盘焦点指当前正在接收键盘输入的UI元素。 在整个桌面上,只能有一个具有键盘焦点的元素。

    2.1K40
    领券