首页 > 语言 > JavaScript > 正文

js实现滑动触屏事件监听的方法

2024-05-06 16:19:24
字体:大 中 小
来源:转载
供稿:网友

这篇文章主要介绍了js实现滑动触屏事件监听的方法,适用于手机端触屏滑动事件的监听技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了js实现滑动触屏事件监听的方法。分享给大家供大家参考。具体实现方法如下:

 

 
  1. function span_move_fun(){ 
  2. var span = document.getElementById("move_k"); 
  3. var span_left = $(span).offset().left; 
  4. var span_top = $(span).offset().top; 
  5. var start_left = $(span).offset().left; 
  6. var start_top = $(span).offset().top; 
  7. span.addEventListener('touchstart', function(event) { 
  8. event.preventDefault(); 
  9. if (event.targetTouches.length == 1) { 
  10. var touch = event.targetTouches[0]; 
  11. span.style.position = "absolute"; 
  12. span_top = $(this).offset().top; 
  13. span_left = $(this).offset().left; 
  14. start_top = touch.pageY 
  15. start_left = touch.pageX 
  16. var left = parseFloat(touch.pageX - start_left + span_left-30); 
  17. var top = parseFloat(touch.pageY - start_top + span_top-73); 
  18. span.style.left = String(left) + 'px'; 
  19. span.style.top = String(top) + 'px'; 
  20. } 
  21. }); 
  22. span.addEventListener('touchmove', function(event) { 
  23. event.preventDefault(); 
  24. if (event.targetTouches.length == 1) { 
  25. var touch = event.targetTouches[0]; 
  26. span.style.position = "absolute"; 
  27. var left = parseFloat(touch.pageX - start_left + span_left-30); 
  28. var top = parseFloat(touch.pageY - start_top + span_top-73); 
  29. span.style.left = String(left) + 'px'; 
  30. span.style.top = String(top) + 'px'; 
  31. } 
  32. }); 
  33. span.addEventListener('touchend', function(event) { 
  34. var touch = event.changedTouches[0]; 
  35. if(parseFloat(touch.pageX - start_left + span_left-30) <= -5 || parseFloat(touch.pageX - start_left + span_left-30) >= 620 || parseFloat(touch.pageY - start_top + span_top-73) <= -38 || parseFloat(touch.pageY - start_top + span_top-73) >= 587){ 
  36. span.style.left = String(span_left-30) + 'px'; 
  37. span.style.top = String(span_top-73) + 'px'; 
  38. } 
  39. event.stopPropagation(); 
  40. }); 
  41. } 

js的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend。这三个事件最重要的属性是 pageX和 pageY,表示X,Y坐标。

touchstart在触摸开始时触发事件

touchend在触摸结束时触发事件

touchmove这个事件比较奇怪,按道理在触摸到过程中不断激发这个事件才对,但是在我的 Android 1.5 中,在 touchstart 激发后激发一次,然后剩余的都和 touchend 差不多同时激发。

这三个事件都都有一个 timeStamp 的属性,查看 timeStamp 属性,可以看到顺序是 touchstart -> touchmove ->touchmove -> … -> touchmove ->touchend。

下面是一段代码实例:

 

 
  1. document.getElementsByTagName_r('body')[0].addEventListener('touchstart',function(e){ 
  2. nStartY = e.targetTouches[0].pageY; 
  3. nStartX = e.targetTouches[0].pageX; 
  4. }); 
  5. document.getElementsByTagName_r('body')[0].addEventListener('touchend',function(e){ 
  6. nChangY = e.changedTouches[0].pageY; 
  7. nChangX = e.changedTouches[0].pageX; 
  8. }); 

PS:

1. touch事件跟click事件是不会被同时触发的。现在的移动设备做的比较好,已经把这个问题完美的避免掉了。

2. 注意触摸的开始和结束位置的位移大小。如果位移小过小应该不做任何动作。

希望本文所述对大家的javascript程序设计有所帮助。

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

图片精选