您好,欢迎访问一九零五行业门户网

安卓平台的浏览器 touchend 事件触发失效?

点击应该触发 touchstart 和 touchend 两个事件,但是安卓手机中并没有触发 touchend,请问如何解决这个问题?
回复内容:touch事件在手机浏览器上存在莫名的兼容性问题, 会导致touchend事件不触发!
http://code.google.com/p/android/issues/detail?id=19827
working with touch events
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.
如果你没有太多顾虑(关于scroll的), 请在touchstart的handle中使用event.preventdefault(), 即可让touchend事件正常触发感谢啊,莫名其妙的问题最近几天开发也碰到了这个问题,项目要模拟一个app的向下拉动加载效果。我的解决办法是在touchmove中添加e.preventdefault(),将浏览器默认的滑动惯性去掉,这样就不会干扰到touchend事件的触发,然后再手写滑动效果,另外需要注意判定是否有滑动产生,避免干扰默认的点击效果触发:
var x, y, z;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: createurl('/teacher/categorymore');?>, type: get, data: { keyword: '', page: slidecouter }, cache: false, success: function (data) { completecall(data); } }); } hasmoved = false;});==============目前别的方法都会有或多或少的弊端,该方法的弊端就是滑动惯性被取消,自己写的效果会不那么流畅,但还算比较好的解决这个兼容问题。
可以考虑同时监听touchcancel事件。@jack king 使用touchcancel这个在android4.4中会出现复制文本之类的
复制文本是什么状况我也想知道我也遇到了这个问题啊,需要顾虑scroll,阻止默认事件这个行不通,使用touchcancel这个在android4.4中会出现复制文本之类的,这个要怎么解决? @bo bo我要顾虑scroll,怎么解决这个问题啊?
其它类似信息

推荐信息