0

.btnマウスのクリックで切り替えたいブートストラップがあります。問題は、モバイル ブラウザでは が からclick300 ミリ秒後に到着するため、タブレットでは応答が遅すぎることです。touchstart

イベントにロジックをバインドしようとしましたがtouchstart、デスクトップ ブラウザー用のアプリを事実上壊してしまいましたtouchstart。次に、同じロジックをバインドすることも考えましclickたが、モバイルブラウザーでイベントが繰り返されます。click最初に を受け取ったときからバインドを解除しようとするなど、ジャグリングをtouchstart行い、非常に複雑なデザインを思いつくことができたので、解決できない癖が常にあちこちにあります。

たとえば、タブレットでフォーカスを受け取るためのテキスト入力を取得できません。フォーカスするとtouchstartclickイベントはフォーカスをボタンに戻します。jQuery Mobile を試してみvmousedownましたが、マルチタッチを行うことができませんでした (同時に複数のボタンをタップしても、そのうちの 1 つだけが変更されました)。私は多くの車輪を再発明したくありません.jQuery MobileまたはプレーンなJavaScriptのいずれかで、明らかな何かが欠けているに違いないと確信しています.

vmousedown具体的には、デスクトップとモバイルの両方で機能し、それぞれで 1 回だけ起動し、マルチタッチを許可するようなイベントが必要です。

4

2 に答える 2

1

デバイスなどに基づいてアクションを処理するためにModernizrを利用します。ユーザー エージェントなどをスニッフィングする必要なく、優れたクロスブラウザー/プラットフォーム サポートを提供します。代わりに、特徴検出を使用します。

jQuery で Modernizr 関数を使用できます。$(document).ready(function()});

$(function(){
    if (Modernizr.touch){
       // bind to touchstart, touchmove, etc and watch `event.streamId`
    } else {
       // bind to normal click, mousemove, etc
    }
});

このコードは、 Modernizr のドキュメントから直接取得したものです。

また、これは実行するための別のリソースですtouch tests

于 2013-05-21T19:36:03.967 に答える
0

パーティーに遅れましたが、jQueryMobile にも同様のタッチ検出があることに注意してください。 / タッチ フレンドリーな機能は、必要以上に難しいものです。たとえば、今日はタッチ スクリーンとマウスを備えた win8 Surface タブレットを見ています。どのデバイスを使用したか知りたい場合があります。event.originalEvent.type はタップとクリックを区別する必要がありますよね? 違う :(。

于 2014-11-17T22:07:42.807 に答える