混合app,网页嵌套在ios上遇到的bug

将h5开发的页面作为一个网址供安卓和ios调用。在ios上遇到了一些bug,现在简单总结一下。

1当使用委托给一个元素添加click事件时,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 divspan 等),此时 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值撑起来,否则会出现光标偏大或者错位的现象



                              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值