0

ここにあるバージョンのコードを使用しています

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は常にfalseですか?どこにも切り替えられません。 ?

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);
4

1 に答える 1

2

友人からのいくつかの有用な助けの後、ここに問題の解決策があります..

                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秒間タップした後、必要なアクションを実行できます.. :)

于 2012-11-04T01:40:43.173 に答える