Phonegap Android нажмите и удерживайте
Я использую версию кода, найденную здесь
var startTime, endTime;
document.getElementById(queryid).addEventListener('touchstart',function() {
startTime = new Date().getTime();
},false);
document.getElementById(queryid).addEventListener('touchend',function(event) {
endTime = new Date().getTime();
if((endTime-startTime) > 1000)
alert('tap hold event');
},false);
он выполняет "трюк" касания и удержания до какого-либо действия, но моя проблема в том, что действие запускается только в том случае, если я перестаю касаться экрана, в то время как я хочу, чтобы действие запускалось после касания в течение, по меньшей мере, 1 секунды, независимо от того, перестаю ли я касаться экран или нет..
этот кажется ближе к тому, что я хочу, но он не кажется законченным..(насколько я понимаю.. gbStillTouching всегда ложен? я не вижу, чтобы где-то переключался.. gnstarttime ==nid? не nid=gnstarttime?
var gnStartTime = 0;
var gbMove = false;
var gbStillTouching = false;
function checkTapHold(nID) {
if ((!gbMove) && (gbStillTouching) && (gnStartTime == nID)) {
gnStartTime = 0;
gbMove = false;
alert('tap hold event');
}
}
window.addEventListener('touchstart',function(event) {
gnStartTime = Number(new Date());
setTimeout('checkTapHold(' + gnStartTime + ');clearTimeout();',2000);
},false);
window.addEventListener('touchmove',function(event) {
gbMove = true;
},false);
window.addEventListener('touchend',function(event) {
gbStillTouching = false;
},false);
1 ответ
Вот решение проблемы, после некоторой полезной помощи от друга..
var gnStartTime = 0;
var gbStillTouching = false;
function checkTapHold(nID) {
if ((gbStillTouching) && (gnStartTime == nID)) {
gnStartTime = 0;
lastClickedId = queryid;
}
}
document.getElementById(queryid).addEventListener('touchstart',function(event) {
gnStartTime = Number(new Date());
gbStillTouching = true;
setTimeout(function() {checkTapHold(gnStartTime);clearTimeout();},1000);
},false);
document.getElementById(queryid).addEventListener('touchend',function(event) {
gbStillTouching = false;
},false);
это работает отлично.. после того, как постучал в течение по крайней мере 1 секунды, я могу выполнить требуемое действие..:)