首页 > 系统 > iOS > 正文

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

2019-11-06 09:48:31
字体:
来源:转载
供稿:网友

将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)){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值撑起来,否则会出现光标偏大或者错位的现象

                              


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表