色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

JavaScript中的tap

姚詩涵1年前10瀏覽0評論

JavaScript中的tap指的是觸摸事件。隨著移動(dòng)設(shè)備的普及,越來越多的網(wǎng)站和應(yīng)用程序都將iphone的tap事件當(dāng)做點(diǎn)擊事件的一部分來使用。隨著HTML5的推出和交互式Web應(yīng)用程序的需求的增加,tap事件成為開發(fā)人員用以支持手勢的一個(gè)很重要的事件。

touchstart、touchmove和touchend是三個(gè)用于構(gòu)建復(fù)雜的手勢(例如拖動(dòng))的基本事件(或觸控點(diǎn))。在大多數(shù)情況下,我們只需要一個(gè)簡單的tap事件。

element.addEventListener('touchstart',function(e){
startX = e.touches[0].pageX;
startY = e.touches[0].pageY;
startTime = e.timeStamp;
}, false);
element.addEventListener('touchend',function(e){
var spanX = e.changedTouches[0].pageX - startX;
var spanY = e.changedTouches[0].pageY - startY;
var endTime = e.timeStamp;
if(Math.abs(spanX) < 5 && Math.abs(spanY) < 5 && endTime - startTime < 500){
e.preventDefault();
doMyFunction(e.target); //點(diǎn)擊事件所調(diào)用的函數(shù)
}
}, false);

上述代碼是一個(gè)常見的tap事件的實(shí)現(xiàn)方式,當(dāng)觸摸事件結(jié)束時(shí)檢查觸摸點(diǎn)是否移動(dòng)過,如果沒有并且觸摸時(shí)間小于500ms,認(rèn)為用戶已經(jīng)進(jìn)行了單擊(tap)。

另一種方法是添加封裝后的tap事件到原型鏈,方便重用:

function addTapEvent(listener, scope) {
var startX,
startY;
return function(e) {
var touch = e.changedTouches[0];
switch (e.type) {
case 'touchstart':
startX = touch.clientX;
startY = touch.clientY;
break;
case 'touchend':
if (Math.abs(touch.clientX - startX) < 10 && Math.abs(touch.clientY - startY) < 10) {
listener.call(scope, e);
}
break;
}
}
}
element.addEventListener('touchstart', addTapEvent(function(){
alert('tapped!');
}));

這種方式為想要使任何DOM元素具有tap事件的開發(fā)人員提供了一種干凈、可擴(kuò)展和可重用的方法。

在移動(dòng)端開發(fā)中,tap事件是不可或缺的一環(huán)。利用它,我們可以實(shí)現(xiàn)更流暢、更自然的操作。它是我們提供出色用戶體驗(yàn)的一個(gè)重要的組成部分。