Touchmove獲取當前觸控的Dom節點

2022-03-28 14:26:14 字數 1113 閱讀 6322

這邊通過需求分析,很容易聯想到,使用touchstart和touchmove這兩個方法來處理響應操作,touchstart比較簡單就不說了,監聽touchmove事件時,發現乙個問題,當我無論如何在監聽元素上移動我的手指,所返回的event.touches[0].target永遠指向第乙個觸控元素的event物件,而不會指向我當前手指所觸控的元素。

這也就意味著我無法通過**返回的event來獲取當前手指觸控的元素

通過查閱資料,這是普遍存在的問題,最推薦的解決方案是使用

elementfrompoint

語法:getmyelement = document.elementfrompoint ( myx , myy )

引數:myx :  必選項。整數(integer)。單位:象素(pixel)。定位橫座標偏移量。

myy :  必選項。整數(integer)。單位:象素(pixel)。定位縱座標偏移量。

返回值:

getmyelement :  物件(element)。返回當前文件上處於指定座標位置最頂層的dom元素。

我們通過touchmove事件返回的event物件,可以獲取當前手指觸控元素的clientx和clienty的值,將值傳入document.elementfrompoint就可獲取當前觸控的值,這裡需要注意的是此方法返回的是最頂層的dom,所以務必將你需要的dom的z-index設定為最高,分享些許我在此專案的核心**:

/**

*獲取儲存當前dom位置的物件

**/var mylocation = e.originalevent.changedtouches[0];

/***取clientx及clienty並傳入elementfrompoint獲取當前手指觸控的dom,大功告成,現在此dom可以任你擺布了

**/var realtarget = document.elementfrompoint(mylocation.clientx, mylocation.clienty);

移動端觸控事件touchmove的坑

一說到移動端觸控事件,大家的反應不就是touchstart,touchmove,touchend嗎,相當於pc段的mousedown,mousemove,mouseup,只要是寫過pc端的js的話,若不慎,往往會坑在移動端。比如說最近我就被touchmove坑了好久好久不能自拔。我的意圖是在觸控的時...

js 觸控的Event 獲取觸控位置

touch有3個事件 touchstart,touchmove,touchend,移動端不能用click,這涉及到click的300ms的延遲問題。但是又沒有原生的tap,所以zepto的touch庫一直被用。還有左滑,右滑螢幕,都是不錯的。div id drag div drag接下來是它的eve...

獲取當前時間

獲取日期 時間 datetime.now.tostring 2008 9 4 20 02 10 datetime.now.tolocaltime tostring 2008 9 4 20 12 12 獲取日期 datetime.now.tolongdatestring tostring 2008年9...