将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)){
Showbo.Msg.alert("您输入了非法字符");
var Nvalue=sliceLast(value)
$this.val(Nvalue);
return;
}
// 只能输入一个.
if(/[.](\d)*\.+/g.test(value)){
Showbo.Msg.alert("只能输入一个.");
value=value.substring(0,value.length-1);
$this.val(value);
return;
}
5,input 的样式,需要设置为,height 与font-size,line-height等高,并用padding值撑起来,否则会出现光标偏大或者错位的现象