1、 iphone第三方输入法不能监听到keyup, keypress, keydown事件:
昨天在工作中遇到的一个小坑,我们在用jQuery绑定一个input框的keyup事件的时候,遇到iphone手机不能监听到的状况,后来仔细排查,发现不能监听到的都是iphone安装了第三方输入法。于是,我们个中百度,stackoverflow之,辗转查询,发现iphone的第三方输入法的问题,在此我们也测试了keydown,keypress事件,最后我们用了html5的oninput事件来监听。这让我们之前想到开发的另外一个项目,当时并没有这样的bug,多么无奈的bug。后来我们发现,我们在这个唯一的区别就是type不一样,注意(html5 input type=”tel”时候会自动调用原生的ios输入法,所以不存在keyup监听不到的情况)。
2、oninput、onpropertychange、onchange事件的区别:
- oninput事件:html5新增的一个事件,现代浏览器包括IE9+都支持此事件。该事件只有通过addEventListener()来注册监听,有一个坑就是当input框的value通过脚本来改变的话是不会执行callback的。当value收到改变的时候就会触发callback;
- onchange事件:onchange事件在内容改变(两次内容有可能还是相等的)且失去焦点时触发;
- onpropertychange事件: onpropertychange事件却是实时触发,即每增加或删除一个字符就会触发,通过js改变也会触发该事件,但是该事件IE专有。
3、iphone input[disabled]样式问题
在ios系统中有个奇怪的样式问题就是,当你的input框为disabled的时候,无论你把color调什么值,都感觉没什么变化,此时要这样的一段神奇代码:
input[disabled],input:disabled{
color: #000; /**要的色值**/
-webkit-text-fill-color: rgba(0, 0, 0, 1);
-webkit-opacity: 1;
}