点击应该触发 touchstart 和 touchend 两个事件,但是安卓手机中并没有触发 touchend,请问如何解决这个问题?
On Android ICS if no preventDefault is called on touchstart or the first touchmove, further touchmove events and the touchend will not be fired.As a workaround we need to decide in the first touchmove if this is a scroll (so we don’t call preventDefault) and then manually trigger touchend.
<code class="text">var slideCouter = 1;
var hasMoved = false;
var checking = false;
var hasMore = true;
$(document).on('touchstart', function (e) {
z = $(document).scrollTop();
x = event.targetTouches[0].pageY;
}).on('touchmove', function (e) {
e.preventDefault();
hasMoved = true;
y = event.targetTouches[0].pageY;
z += x - y;
$(document).scrollTop(z);
}).on('touchend', function (e) {
if (x - y > 200 && !checking && hasMoved && hasMore) {
checking = true;
slideCouter++;
$('.login').removeClass('none');
$.ajax({
url: "<?php echo $this->createUrl('/teacher/categoryMore');?>",
type: "get",
data: {
"keyword": '<?php echo $keyword;?>',
"page": slideCouter
},
cache: false,
success: function (data) {
completecall(data);
}
});
}
hasMoved = false;
});
==============
目前别的方法都会有或多或少的弊端,该方法的弊端就是滑动惯性被取消,自己写的效果会不那么流畅,但还算比较好的解决这个兼容问题。
</code>
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号