国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

js實(shí)現(xiàn)滑動(dòng)觸屏事件監(jiān)聽(tīng)的方法

2019-11-20 12:33:03
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了js實(shí)現(xiàn)滑動(dòng)觸屏事件監(jiān)聽(tīng)的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

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的左右滑動(dòng)觸屏事件,主要有三個(gè)事件:touchstart,touchmove,touchend。這三個(gè)事件最重要的屬性是 pageX和 pageY,表示X,Y坐標(biāo)。

touchstart在觸摸開(kāi)始時(shí)觸發(fā)事件

touchend在觸摸結(jié)束時(shí)觸發(fā)事件

touchmove這個(gè)事件比較奇怪,按道理在觸摸到過(guò)程中不斷激發(fā)這個(gè)事件才對(duì),但是在我的 Android 1.5 中,在 touchstart 激發(fā)后激發(fā)一次,然后剩余的都和 touchend 差不多同時(shí)激發(fā)。

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

下面是一段代碼實(shí)例:

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事件是不會(huì)被同時(shí)觸發(fā)的。現(xiàn)在的移動(dòng)設(shè)備做的比較好,已經(jīng)把這個(gè)問(wèn)題完美的避免掉了。

2. 注意觸摸的開(kāi)始和結(jié)束位置的位移大小。如果位移小過(guò)小應(yīng)該不做任何動(dòng)作。

PS:這里再為大家提供一個(gè)關(guān)于JS事件的在線工具,歸納總結(jié)了JS常用的事件類(lèi)型與函數(shù)功能:

javascript事件與功能說(shuō)明大全:

http://tools.VeVB.COm/table/javascript_event

希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 林甸县| 徐州市| 桂林市| 彝良县| 尚志市| 威宁| 昂仁县| 龙游县| 平泉县| 老河口市| 鱼台县| 阿拉善右旗| 三台县| 体育| 定远县| 修武县| 五华县| 珠海市| 江北区| 上虞市| 北辰区| 宽城| 黔西县| 获嘉县| 浑源县| 福州市| 炉霍县| 麻阳| 东方市| 维西| 北川| 遂平县| 麻江县| 双流县| 三穗县| 夏津县| 延吉市| 香港| 化州市| 滕州市| 巴彦淖尔市|