可编辑DIV与移动端软键盘兼容性问题汇总
此文复现的所有兼容性问题均为以下情况:
1. 腾讯X5内核
2. 全屏webview
问题如下:
1. IOS12 中软键盘弹出导致页面顶部截断,并且无法恢复。
解决方法:添加交互事件,调用本地方法,在键盘收起后执行页面回滚操作。
bridgeClass.jsEventHook.keyboardWillShow = function () {
// 添加flag 是因为 有多个空时,切换输入框也会调用WillHide
switchFlag = true;
};
bridgeClass.jsEventHook.keyboardWillHide = function() {
switchFlag = false;
setTimeout(() => {
if (!switchFlag) {
document.body.scrollTop = ;
document.body.style.height = document.body.clientHeight;
}
}, );
};
2. 页面中有多个可编辑DIV时,点击IOS系统中软键盘左上方的上下箭头会导致页面布局错乱
解决方法: 利用样式 user-modify 或者contentEditable,在整体页面中通时只存在一个可编辑DIV,从而变向禁止IOS软键盘的上下箭头。
3. 获取可编辑DIV内容时,除获取到所需文本之外,空格可能会被解析为UTF-8, 出现乱码的情况。
解决方法: 使用encodeURI碱性转码,使用decodeURI或者decodeURIComponent获取标签的innerHTML内容并进行解码。(前提需要将多余的标签过滤掉)
4. IOS使用中文输入法输入英文时会出现多余的空格,并且出现乱码的情况。
解决方法: 同问题三的解决方法
5. 可编辑DIV在IOS中无法通过调用focus使其获取光标
在IOS系统中,无法通过代码主动触发focus事件,只能通过用户手动触发
解决方法: 是哦那个window.navigator.userAgent 匹配 Safari 做相应的交互处理
6. 使用伪元素模拟placeholder效果
.eidt-area__main:empty:before{
content: attr(ph);
color:#999;
font-size: .427rem;
}
.eidt-area__main:focus:before{
content: none;
}
7.可编辑div中防止单个单词过长,或单行英文过长导致布局错乱
word-wrap: wrap;
word-break: keep-all;
8.在可编辑div中禁止右键弹出菜单活长按弹出菜单
为可编辑div添加属性 oncontextmenu="window.event.returnValue=false"
<div id="write-box" class="write-box" :class="{'write-box-over': wordCount > wordMax}" spellcheck="false" autocapitalize="off" autocomplete="off" autocorrect="off" ph="请在此处输入你的答案" contenteditable="plaintext-only" onpaste="return false;" oncopy="return false;" oncut="return false" @input="checkInput" oncontextmenu="window.event.returnValue=false"></div>
9. 在文章中嵌入可编辑div导致编辑的文字和文章的文字水平未居中
在外层盒子中使用 vertical-align做垂直对齐设置
10. 需求: 在可编辑div输入框光标后面显示词数
使用 :after 伪元素,为可编辑DIV添加属性count
.write-box::after{
content: attr(count);
color: #999;
font-size: 0.427rem;
line-height: 0.4rem;
}
11. 可编辑DIV光标定位至最后
let oDiv = document.querySelector('#write-box');
oDiv .focus();
var range = window.getSelection();//创建range
range.selectAllChildren(oDiv);//range 选择obj下所有子内容
range.collapseToEnd();//光标移至最后
可编辑DIV与移动端软键盘兼容性问题汇总的更多相关文章
- Ionic3学习笔记(九)关于 Android 端软键盘弹出后界面被压缩的问题
本文为原创文章,转载请标明出处 今天做了一个如下图所示的页面. iOS 端毫无 bug,Android 端却出现了问题.当软键盘弹出后,Android 端的 tabs 移到了软键盘的上面,再仔细一看, ...
- web中ios移动端软键盘收起后,页面内容留白不下滑
微信里面打开web页面,在ios软键盘收起时,页面键盘位置的内容留白,如下图 这个问题纠结了很久,然后请教了老大(威哥),看到页面老大给出的方案就是代码改变滚动条的位置. 这里就监听键盘收起的事件,来 ...
- vue-自定义pc端软键盘
<template> <div> <el-input v-model="money" type="textarea" placeh ...
- IOS微信端软键盘收起后界面按钮失效问题
问题描述: 1.在vue里封装了一个confirm的弹窗(即如下一个弹窗) 2.发现在IOS微信客户端中打开后,当需要在表单中输入内容的时候,很自然的点击了键盘右上角的[完成]按钮 3.啊~~~,惊人 ...
- 总结几个移动端H5软键盘的大坑
1.部分机型软键盘弹起挡住原来的视图 解决方法:可以通过监听移动端软键盘弹起 Element.scrollIntoView() 方法让当前的元素滚动到浏览器窗口的可视区域内.参数如下. true,表示 ...
- form表单提交和ajax表单提交,关于移动端如何通过软键盘上的【搜索】和【前进】进行提交操作
[文章来源]由于自己对于form研究甚少,所以一直用的都是AJAX进行提交,这次后台提出要用form提交,顺便深入研究一下:之前在做表单的时候,发现input可以通过设置不同的type属性,调用不同的 ...
- JS移动端如何监听软键盘回车事件
移动端经常项目中会有搜索之类的功能,一般实现的是按搜索按钮进行搜索,如果要像PC端一样实现按回车键进行搜索该怎么实现呢? 方法很简单,就是在搜索框的input外面套一个form标签 注意点:form ...
- 【移动端web】软键盘兼容问题
软键盘收放事件 这周几天遇到了好几个关于web移动端兼容性的问题.并花了很长时间去研究如何处理这几种兼容问题. 这次我们来说说关于移动端软键盘的js处理吧. 一般情况下,前端是无法监控软键盘到底是弹出 ...
- Android EditText弹出软键盘实现页面标题头不动,软键盘弹出在编辑框下面
为了实现EditText编辑的时候弹出软键盘标题头不动,底部编辑框,上移在这总结: RelativeLayout在弹出软键盘的时候先寻找android:layout_alignParentBottom ...
随机推荐
- Confluence 6 数据库连接方式
你可以使用 JDBC URL 或者一个 JNDI 数据源来连接 Confluence 到你的数据库. 在默认的设置向导中,只提供了使用 JDBC 数据库连接选项,这个也是推荐的数据库连接选项. 如果你 ...
- LeetCode(111):二叉树的最小深度
Easy! 题目描述: 给定一个二叉树,找出其最小深度. 最小深度是从根节点到最近叶子节点的最短路径上的节点数量. 说明: 叶子节点是指没有子节点的节点. 示例: 给定二叉树 [3,9,20,null ...
- Solver Of Caffe
本文旨在解决如何编写solver文件. Solver的流程: 1. 设计好需要优化的对象,以及用于学习的训练网络和用于评估的测试网络.(通过调用另外一个配置文件prototxt来进行) 2. ...
- Linux文本分析命令awk的妙用
基本用法 awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理 awk命令格式如下 awk [-F field-sep ...
- Java SimpleDateFormat 中英文时间格式化转换
2015年08月29日 17:37:43 阅读数:32459 SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类.它允许进行格式化(日期 -> 文本).解析( ...
- 论文阅读笔记三十九:Accurate Single Stage Detector Using Recurrent Rolling Convolution(RRC CVPR2017)
论文源址:https://arxiv.org/abs/1704.05776 开源代码:https://github.com/xiaohaoChen/rrc_detection 摘要 大多数目标检测及定 ...
- HDU 1695 GCD (莫比乌斯反演模板)
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- HDU 1452 Happy 2004(因数和+费马小定理+积性函数)
Happy 2004 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- 解决AS gradle下载同步卡慢的问题
国内因为GFW的原因,导致同步谷歌等服务器的插件源非常非常慢,几乎是龟爬,还好有阿里云的镜像源,据说速度很快,还不快试试: 1.build.gradle里的buildscript和allproject ...
- 通过CSS自动截取字符串长度
Table Tr TD的自动换行 <style type="text/css"> table { width: 30em; table-layout: fixed; ...