js實現滑動觸屏事件監聽的方法

來源:互聯網
上載者:User

js實現滑動觸屏事件監聽的方法

   這篇文章主要介紹了js實現滑動觸屏事件監聽的方法,適用於手機端觸屏滑動事件的監聽技巧,非常具有實用價值,需要的朋友可以參考下

  本文執行個體講述了js實現滑動觸屏事件監聽的方法。分享給大家供大家參考。具體實現方法如下:

  ?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

function span_move_fun(){

var span = document.getElementById("move_k");

var span_left = $(span).offset().left;

var span_top = $(span).offset().top;

var start_left = $(span).offset().left;

var start_top = $(span).offset().top;

span.addEventListener('touchstart', function(event) {

event.preventDefault();

if (event.targetTouches.length == 1) {

var touch = event.targetTouches[0];

span.style.position = "absolute";

span_top = $(this).offset().top;

span_left = $(this).offset().left;

start_top = touch.pageY

start_left = touch.pageX

var left = parseFloat(touch.pageX - start_left + span_left-30);

var top = parseFloat(touch.pageY - start_top + span_top-73);

span.style.left = String(left) + 'px';

span.style.top = String(top) + 'px';

}

});

span.addEventListener('touchmove', function(event) {

event.preventDefault();

if (event.targetTouches.length == 1) {

var touch = event.targetTouches[0];

span.style.position = "absolute";

var left = parseFloat(touch.pageX - start_left + span_left-30);

var top = parseFloat(touch.pageY - start_top + span_top-73);

span.style.left = String(left) + 'px';

span.style.top = String(top) + 'px';

}

});

span.addEventListener('touchend', function(event) {

var touch = event.changedTouches[0];

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){

span.style.left = String(span_left-30) + 'px';

span.style.top = String(span_top-73) + 'px';

}

event.stopPropagation();

});

}

  js的左右滑動觸屏事件,主要有三個事件:touchstart,touchmove,touchend。這三個事件最重要的屬性是 pageX和 pageY,表示X,Y座標。

  touchstart在觸摸開始時觸發事件

  touchend在觸摸結束時觸發事件

  touchmove這個事件比較奇怪,按道理在觸摸到過程中不斷激發這個事件才對,但是在我的 Android 1.5 中,在 touchstart 激發後激發一次,然後剩餘的都和 touchend 差不多同時激發。

  這三個事件都都有一個 timeStamp 的屬性,查看 timeStamp 屬性,可以看到順序是 touchstart -> touchmove ->touchmove -> … -> touchmove ->touchend。

  下面是一段代碼執行個體:

  ?

1

2

3

4

5

6

7

8

document.getElementsByTagName_r('body')[0].addEventListener('touchstart',function(e){

nStartY = e.targetTouches[0].pageY;

nStartX = e.targetTouches[0].pageX;

});

document.getElementsByTagName_r('body')[0].addEventListener('touchend',function(e){

nChangY = e.changedTouches[0].pageY;

nChangX = e.changedTouches[0].pageX;

});

  PS:

  1. touch事件跟click事件是不會被同時觸發的。現在的行動裝置做的比較好,已經把這個問題完美的避免掉了。

  2. 注意觸摸的開始和結束位置的位移大小。如果位移小過小應該不做任何動作。

  希望本文所述對大家的javascript程式設計有所協助。

        注< >:更多精彩教程請關注幫客之家編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.