H5混合开发中android终端和ios终端常见的兼容问题2
2024-08-28 18:29:36
转自 https://www.cnblogs.com/stoneniqiu/p/6077112.html
1.ios键盘挡住输入框。
setInterval(function () {
if (document.activeElement.className.indexOf('inputcontent') >= 0) {
document.activeElement.scrollIntoViewIfNeeded();
}
}, 300);
inputcontent为输入框的样式。activeElement表示获得焦点的元素。但是这个方法只在app中有用,如果是在浏览器中还是会失效。
2.确保弹出来的是数字键盘
<input type="number" pattern="[0-9]*" />
<input type="password" pattern="[0-9]*" />
只有number或者tel还是不够,只有加入正则,ios才会出现九宫格。
3. fastClick 锁住输入框
在ios中,会出现几秒的输入框没有反应,开始也怎么想不明白,各种尝试,推测,搜索发现原来是使用的轻框架中用到了fastClik引起的,解决的办法就是加上一个样式。
<div id="content" class="inputcontent needsclick" ></div>
如果不加这个,不单会锁住输入框,每次调用focus都会设置光标跑在最前面,无法移动到后面。
4.模拟placeholder
div作为输入框,本身加入placeholder是无效的。得借助于伪元素。
<div id="content" class="inputcontent needsclick" placeholder="有问题就尽管提问吧" contenteditable="true"></div> .tools .inputcontent:after {
display: inline-block;
width: 100%;
color: #999;
content: attr(placeholder);
}
然后在获得焦点和失去焦点的时候对这个属性进行移除和添加操作。这样做的好处在于,分离用户输入的内容,如果把placeholder的值直接在写输入框中这样会多一些判断,让代码不太干净。
5.快速滚动和回弹的效果
要实现这个效果很简单,只需要加一行css代码即可,单独对body设置-webkit-overflow-scrolling touch是无效的,需要针对html和body同时设置才有效果:
html,body{
height: 100%;
overflow: auto;
-webkit-overflow-scrolling: touch;
}
问题参考:https://blog.csdn.net/eadio/article/details/78520412
最新文章
- C++ 画星号图形——空心梯形(核心代码记录)
- 基本XML解析---编写
- 旅图beta版 asp.net web api 单元测试
- THEOS makefile
- tomcat免重启随意更改java代码 提高开发效率
- jquery的datepicker汉化
- Nopcommerce架构浅谈之文件结构
- 百度地图 Android SDK - 检索功能使用的简单演示样例
- maven+springmvc+easyui+fastjson+pagehelper
- jQuery实现导航监听事件
- Excel图表-太极图
- Excel import
- 解决myeclipse10.1导出War包出错:Security Alert:Integrity check error
- jemter分布式部署及linux下分布式脚本执行
- 伪Ajax-iframe
- LeetCode —— 移动零
- 在Sqlite中通过Replace来实现插入和更新
- 诡异的楼梯(bfs)hdu1180
- SliTaz 5.0 截图
- docker stack命令