一些日常开发的小坑

336 阅读3分钟

1.react开发时,ios设备onClick事件不触发。 解决办法:定义css,给需要onclick的元素修改为pointer;

.clickable{
    cursor: pointer;
}

2.人民币符号¥,使用转义符号 #&165; 在部分安卓机上无法显示(代表机型:华为荣耀6)。
原因:OSX系统下的自带输入法可能对中文字符的支持不好。

解决办法:安装第三方输入法,直接使用中文拼音输入¥即可。

3.软键盘唤起后,页面的 fixed 元素将失效(即无法浮动,也可以理解为变成了 absolute 定位),所以当页面超过一屏且滚动时,失效的 fixed 元素就会跟随滚动了。这便是 iOS 上 fixed 元素和输入框的 bug 。其中不仅限于 type=text 的输入框,凡是软键盘(比如时间日期选择、select 选择等等)被唤起,都会遇到同样地问题。

4.一个现象:ios设备中,系统环境:ios 9.3.2,测试例子:倒计时组件, safari,chrome滚动过程中不会阻塞js代码执行(倒计时会继续执行),不论是自然文档流布局还是,定位布局;在webview中,微信等应用中,自然文档流布局的滚动会阻塞js代码(倒计时组件setInterval停止执行),但是用绝对定位布局,如下

.xxx{
    position: absolute;
    top: 44px;
    bottom: 50px;
    width: 100%;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

在该定位的元素中滚动时,不会阻塞js代码,setInterval继续执行。但是当滚动到边界拉出ios特有的弹性边界时,又开始阻塞js代码。

5.html的input type="range"在移动设备上无法对slider进行拖拽或者点击到某个位置

6.input获得焦点后,弹出虚拟键盘,此时,安卓机点击虚拟键盘上的收起键盘,虚拟键盘被收起,但input依旧处于获得焦点的状态。IOS中点击虚拟键盘上的收起键盘,input会失去焦点。

7.hybird应用一个常见的问题就是,native返回按键和h5返回按钮的逻辑处理。使用native返回按钮,需要native提供支持,h5通过在window对象上绑定类似window.nativeGoBack = function() {}这样的方法, nativewebview劫持到用户点击物理返回或者返回按钮时,就可以调用h5的nativeGoBack方法。执行相应的逻辑,可能是history.go,也可能是native提供的关闭webview的方法。当history.go时,如果是在同一个webview中从bbb的h5应用返回到了aaa的h5引用,那么可能还需要native提供释放nativeGoBack返回按钮劫持的方法。因为aaa的h5应用,也可能定义了自己的返回按钮方法nativeGoBackaaa。

8.hybird应用中,由于native权限的问题,可能会导致input type='file'不能唤起原生的上传拍照控件,这点在iosandroid都需要确认。

以上就是我日常踩得一些坑,帮助大家避免再次踩坑~~~