将h5开发的页面作为一个网址供安卓和ios调用。在ios上遇到了一些bug,现在简单总结一下。
1,当使用委托给一个元素添加click
事件时,如果事件是委托到 document
或 body
上,并且委托的元素是默认不可点击的(如 div
, span
等),此时 click
事件会失效。
解决办法有 4 种可供选择
1,将 click
事件直接绑定到目标元素(即 .target
)上
2, 将目标元素换成 <a>
或者 button
等可点击的元素
3,将 click
事件委托到非 document
或 body
的父级元素上
4,给目标元素加一条样式规则 cursor:pointer; 应用最多的就是增加该CSS 样式。
2, IOS中input键盘事件keyup、keydown、keyPRess支持不是很好
用input search做模糊搜索的时候,在键盘里面输入关键词,会通过Ajax后台查询,然后返回数据,然后再对返回的数据进行关键词标红。用input监听键盘keyup事件,在安卓手机浏览器中是可以的,但是在ios手机浏览器中变红很慢,用输入法输入之后,并未立刻相应keyup事件,只有在通过删除之后才能相应!
$(".maintain_trCount").on("input",function(){});;
3,input type=file打不开相册或者闪退
因为系统弹出alertview的时候我们的根控制器不是当前所在的控制器。重新指定当前窗口的根控制器为tabBarController就可以了。
4,input type=number作为网页混合开发时,在ios上不仅无效,可以输入各种非法字符,如中文等等,而且使用jquery 取val值还为空。所以可以用
input type=text代替。并用正则进行验证
//禁止输入除了数字和.以外的字符if(/[^(/d||.)]/g.test(value)){alert("您输入了非法字符");if(value.length==1){value="";$this.val(value);}else if(value.length>=2){value=value.substring(0,value.length-1);$this.val(value);}return;}// 只能输入一个.if(/[.](/d)*/.+/g.test(value)){common_alert("只能输入一个.");value=value.substring(0,value.length-1);$this.val(value);return;}
5,input 的样式,需要设置为,height 与font-size,line-height等高,并用padding值撑起来,否则会出现光标偏大或者错位的现象
新闻热点
疑难解答