2012-03-15 3 views
2

こんにちは私はwebappを構築しています。 http://cubiq.org/remove-onclick-delay-on-webkit-for-iphone に私はこのスクリプト見つけonclickの遅延を削除するにはコードがアンドロイドのwebappsのonclick delayを削除する

function NoClickDelay(el) { 
this.element = el; 
if('ontouchstart' in window){ 
    console.log("===================touch supported :P") 
    this.element.addEventListener('touchstart', this.handleEvent, false); 
}        
} 

NoClickDelay.prototype = { 
handleEvent: function(e) { 
    switch(e.type) { 
     case 'touchstart': this.onTouchStart(e); break; 
     case 'touchmove': this.onTouchMove(e); break; 
     case 'touchend': this.onTouchEnd(e); break; 
    } 
}, 

onTouchStart: function(e) { 

    //e.preventDefault(); //removed to let the page scroll 
    this.moved = false; 

    this.element.addEventListener('touchmove', this, false); 
    this.element.addEventListener('touchend', this, false); 
}, 

onTouchMove: function(e) { 

    this.moved = true; 
}, 

onTouchEnd: function(e) { 
    this.element.removeEventListener('touchmove', this, false); 
    this.element.removeEventListener('touchend', this, false); 

    if(!this.moved) { 
     // Place your code here or use the click simulation below 
     var theTarget = document.elementFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY); 
     if(theTarget.nodeType == 3) theTarget = theTarget.parentNode; 

     var theEvent = document.createEvent('MouseEvents'); 
     theEvent.initEvent('click', true, true); 
     theTarget.dispatchEvent(theEvent); 
    } 
} 
}; 

私の質問は、これはiphone/iPadではなくAndroid上で動作することであるbascically-です。何がアンドロイドで動作するのを防ぎ、アンドロイドや他のデバイスで同様の動作を達成するために何ができるのですか?助けてください。

AndroidはラグonClicksと同じ問題を抱えている:誰かがそこにあるあなたのリンクで

答えて

1

は、Androidソリューション(私はそれを試していない)についてコメントしました。あなたのデモはAndroidでは動作しません。私がwindow.Touchをコメントアウトしない限り、DOMプロパティはiOS上にしか見えません。

function NoClickDelay(el) { 
this.element = el; 
// if (window.Touch) not available on android 
this.element.addEventListener(‘touchstart’, this, false); 
} 

上記の変更で、Androidは非遅れのタッチイベントを取得します。

+0

はい。実際の問題はe = e.originalEventを追加することでした。 onTouchEnd関数の 。 :) – ghostCoder

3

私たちは同じ問題を抱えていましたが、それはわずかに異なるもので解決しました。 iPhoneとAndroid用に修正できました。クリックは直ちに発生し、遅延イベントは無視されます。たぶん、あなたはそれを使用することができます。

https://github.com/cargomedia/jquery.touchToClick

+0

+1私たちは同じ問題を抱えていました。私たちのケースでは、iPhoneのcurserはもう動作しませんでした。この問題も修正されるかどうかは分かりますか? – Besi

+0

とても簡単だと思います。やってみなよ。実装が本当に簡単です –

+0

素晴らしい実装Marcel。それはまさにそれが何をすべきか、ただ一つの問題です。 jqueryソート可能では機能しません。私はリスト内の項目を並べ替えるためにそれを使用しています、そして、私はこのプラグインがその機能を吹き飛ばすと思います。 – weexpectedTHIS

0

touchToClickまたはfastclickは、私の場合には動作しません。

私はonclickのイベントで多くのコードを持っていた、と私は実際にTappyを使用しています:

onClick event in android webview too slow

0

<meta name="viewport" content="width=device-width, user-scalable=no">

をこれは、ダブルタップズームを無効にしますので、ブラウザを検出するのを待つことはありませんダブルタップ。タップイベントを気にする必要はありません。残念ながら、最近のブラウザでのみ動作します。

関連する問題