8

jQueryとHTMLページを使用して、Androidでtouchstart、touchmove、およびtouchendイベントを正常に再生することができました。今、私は、1つが3秒間タップして保持する、ロングタップイベントを決定するための秘訣を確認しようとしています。私はまだこれを理解できないようです。Sencha Touch、JQTouch、jQMobileなどを使用せずに純粋にjQueryでこれを実行したいと考えています。

私はjQTouchの概念が好きですが、それは私に多くを提供せず、私のコードのいくつかはそれで壊れます。Sencha Touchを使用することで、私はjQueryからExt.jsに移行し、特にjQueryが非常に機能している場合に、Javascriptの抽象化を行う新しい方法を好むわけではありません。だから、私はこれをjQueryだけで理解したいと思います。jQueryを使用して、jQTouchやSenchaTouchの多くのことを自分で行うことができました。そして、jQMobileはまだベータ版であり、Androidにはまだ十分に向けられていません。

4

5 に答える 5

12

タイマーは使用されていませんが、ユーザーが長押しした後に指を離した後にのみ起動します。

var startTime, endTime;
var gbMove = false;

window.addEventListener('touchstart',function(event) {
    startTime = new Date().getTime(); 
    gbMove = false;        
},false);

window.addEventListener('touchmove',function(event) {
  gbMove = true;
},false);

window.addEventListener('touchend',function(event) {
    endTime = new Date().getTime();
    if(!gbMove && (endTime-startTime)/1000 > 2)
        alert('tap hold event');      
},false);
于 2012-03-31T14:34:50.277 に答える
7
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) {
  gbMove = false;
  gbStillTouching = true;
  gnStartTime = Number(new Date());
  setTimeout('checkTapHold(' + gnStartTime + ');',2000);
},false);

window.addEventListener('touchmove',function(event) {
  gbMove = true;
},false);

window.addEventListener('touchend',function(event) {
  gbStillTouching = false;
},false);
于 2011-01-17T07:12:37.857 に答える
0

なぜjsタイマーを使用しないのですか?私は次のようなことをしました:

i=0;
$drink = document.getElementById('drink');
$drink.addEventListener('touchstart',function(event){
    $('#drink .mainBtnText').text('HOLD'); //mostly for debugging
    t = window.setInterval(function(event){
            i+=.5;
            if (i>=1){
                alert('taphold');
                window.clearInterval(t);
                i=0;
            }
        },500);
});
$drink.addEventListener('touchend',function(event){
    $('#drink .mainBtnText').text('Drink');
    i=0;
    window.clearInterval(t);
});

そして、これまでのところまったく問題はありませんでした...確かに、私は信じられないほど広範なデバイステストを行っていませんが、デスクトップ(マウスダウン/マウスアップ)とHTC Droid Eris(Android 1.6)で動作しましたと私のDroidRAZR(Android 2.3)..。

于 2012-05-26T05:15:38.507 に答える
0

私はこのようなことをしました:

var touchCounter;

window.addEventListener('touchstart', function () {
  var count = 0;
  touchCounter = setInterval(function () {
    count++;
    if (count == 10) alert('touch lasted 10 seconds');
  }, 1000);
});

window.addEventListener('touchend', function () {
  clearInterval(touchCounter);
  touchCounter = null;
});
于 2015-10-20T14:02:04.833 に答える
0

jQueryではありませんが、Androidアプリで次のように実行しました。

  1. 登録されたイベントリスナー:

    var touchStartTimeStamp = 0;
    var touchEndTimeStamp   = 0;
    
    window.addEventListener('touchstart', onTouchStart,false);
    window.addEventListener('touchend', onTouchEnd,false);
    
  2. 追加された機能:

    var timer;
    function onTouchStart(e) {
        touchStartTimeStamp = e.timeStamp;
    }
    
    function onTouchEnd(e) {
        touchEndTimeStamp = e.timeStamp;
    
        console.log(touchEndTimeStamp - touchStartTimeStamp);// in miliseconds
    }
    
  3. 時差をチェックして、私のことをしました

これがお役に立てば幸いです。

于 2017-01-03T12:37:59.830 に答える