与我们合作
我们专注:网站策划设计、网络多媒体传播、网站优化及网站营销、品牌策略与设计
主营业务:网站建设、移动端微信小程序开发、VI设计、网络运营、云产品·运维解决方案
有一个品牌项目想和我们谈谈吗?
您可以填写右边的表格,让我们了解您的项目需求,这是一个良好的开始,我们将会尽快与您取得联系。当然也欢迎您给我们写信或是打电话,让我们听到您的声音
您也可通过下列途径与我们取得联系:
地 址: 深圳.龙岗区大运软件小镇11栋3楼
电 话: 138 2888 4598 / 138 0880 9053
网 址: http://www.appvx.cn
快速提交您的需求 ↓
在ApiCloud app上动态生成的dom绑定事件,在andriod端正常,但是在ios端失效。主要原因可归根于在ios端safari浏览器浏览器处理事件冒泡上
Safari中是这样处理事件冒泡的:
1.点击某个DIV或其他元素。
2.发现没有处理该事件,继续往上冒泡。
3.直到冒泡到body下面的子节点为止,还是没有人处理该事件的话,就把该事件丢弃掉。不再往上冒泡。
4.只要在这一条冒泡链当中,有一个节点处理了该事件,它就不会丢弃该事件,会继续往上冒,冒到body 然后document然后window。
解决方法:
一、那么解决办法就是在body的下级,写个空函数接收一下事件
$("body").children().click(function () {
//这里不要写任何代码
});
二、使用touchstart或者touchend代替click事件。触屏事件问题,如果触发了touchmove,touchend就不会被触发了,而且touchmove没有持续触发。在touchstart的时候调用下event.preventDefault(); 阻止冒泡事件,即可让其他事件都正常被触发。
三、将事件直接写到dom的onclick上,可以成功调用。onclick=””
四、safari认为添加css属性cursor: pointer;才是可点击区域,IOS认定只有可点击的DOM对象才可以触发点击事件,比如a、button标签,对于非点击对象,需要将其变为可点击对象;
.btn{
cursor: pointer;//重点加上这个属性,解决问题
}
<div>
<button class="btn">按钮</button>
</div>
$('body').on('click', '.btn', function(){
});
五、引入fastclick.js,页面初始化,解决IOS点击失效、点透、延时300毫秒的问题
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0" />
<meta name="format-detection" content="telephone=no,email=no,date=no,address=no">
<title></title>
</head>
<body>
</body>
<script type="text/javascript" src="../../../script/api.js"></script>
<script type="text/javascript" src="../../../script/fastclick.min.js"></script>
<script type="text/javascript">
apiready = function() {
api.parseTapmode();
FastClick.attach(document.body); //消除300ms
}
</script>
</html>