Javascript ontouchstart / move / end-获得奇怪的结果
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript ontouchstart / move / end-获得奇怪的结果,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1968字,纯文字阅读大概需要3分钟。
内容图文
我正在使用平板电脑/智能手机的滑动功能来构建此图片库.我在iPad上获得了非常奇怪的结果,所以我决定一直追溯到一开始,并在发生不同事件时打印出来.
在我用手指完成一次滑动之后,以下代码应该会发出警告:“ start.move.move.move.end”(“移动”的数量取决于滑动动作的持续时间).
itemWrap[0].ontouchstart = function(e) {
_self.msg.push("start");
}
itemWrap[0].ontouchmove = function(e) {
_self.msg.push("move");
}
itemWrap[0].ontouchend = function(e) {
_self.msg.push("end");
// join messages and alert to browser
msg = _self.msg.join(".") || "empty";
alert(msg);
}
但是,我收到了非常奇怪的警报,它们在Android / iOS设备上有很大的不同.在Android上,大多数情况下结果都令人期待:
“ start.move.move.move.move.end”
“ start.end”(在轻拂屏幕时)
“ start.move.start.end”(每隔触摸一次就会发生一次)
但是在iPad上,我得到了一些非常奇怪的结果.在第一次触摸操作中,我得到的正是预期的结果,但是在第二次触摸操作中,包含结果的警报(“ start.move.move.move.end”)在触摸屏幕时立即触发,并且始终包含以前的结果.当我第三次触摸屏幕时,它又回到了正常操作状态,因此每执行一次其他触摸操作都会执行一次.
我到处寻找有类似问题的人,但我似乎得到的最接近的用户是多点触摸操作存在问题的用户(我对此不感兴趣).关于为什么发生这种情况有什么建议吗?
解决方法:
您必须记住,触摸是多点触摸,并不像总是一个鼠标事件.每次您获得触摸事件(touchstart,touchstart,touchend),您还将获得标识符
itemWrap[0].ontouchstart = function(e) {
// e.touches.length - number of touches
// e.touches[e.touches.length - 1].identifier - last touch is the last one on the list
// e.touches[e.touches.length - 1].pageX and .pageY - place of the touch
_self.msg.push("start");
}
因此,当您进行touchmove和touchend时,您必须检查该标识符以查看移动或结束了哪个触摸.您可以通过将数据保存在touchstart中来实现:
var t = {pageX:event.touches[index].pageX, pageY:event.touches[index].pageY, identifier:event.touches[index].identifier};
touches.push(t);
然后使用
event.changedTouches[0].identifier
在这里,您不需要浏览该列表,因为它始终只是一个,而您必须将该标识符与保存在列表中的标识符进行比较.
希望这会有所帮助.
内容总结
以上是互联网集市为您收集整理的Javascript ontouchstart / move / end-获得奇怪的结果全部内容,希望文章能够帮你解决Javascript ontouchstart / move / end-获得奇怪的结果所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。