私はさまざまなデバイスで動作する必要があるモバイルWebサイトに取り組んでいます。現在頭痛の種となっているのはBlackBerryです。
キーボードクリックとタッチイベントの両方をサポートする必要があります。
理想的には次のように使用します:
$thing.click(function(){...})
しかし、私たちが遭遇している問題は、これらのブラックベリーデバイスの一部には、タッチの時間からクリックをトリガーするまでの非常に迷惑な遅延があるということです。
解決策は、代わりにtouchstartを使用することです。
$thing.bind('touchstart', function(event){...})
しかし、どのようにして両方のイベントをバインドするのですか?キーボードデバイスのクリックイベントはまだ必要ですが、タッチデバイスを使用している場合は、もちろんクリックイベントの発生を望まないでください。
おまけの質問:これを行う方法はありますか?さらに、タッチスタートイベントさえもないブラウザーに対応できますか?これを調査したところ、BlackBerry OS5はタッチスタートをサポートしていないようです。そのため、そのブラウザーのクリックイベントにも依存する必要があります。
補遺:
おそらくより包括的な質問は次のとおりです。
jQueryを使用して、同じバインディングでタッチ操作とマウス操作の両方を処理することは可能/推奨されますか?
理想的には、答えはイエスです。そうでない場合は、いくつかのオプションがあります。
1)WURFLを使用してデバイス情報を取得するため、独自のデバイスマトリックスを作成できます。デバイスに応じて、タッチスタートまたはクリックを使用します。
2)JSを介してブラウザーでタッチサポートを検出します(これについてさらに調査する必要がありますが、それは実行可能のようです)。
ただし、それでも1つの問題が残ります。両方をサポートするデバイスはどうでしょうか。私たちがサポートする一部の電話(つまり、NokiasとBlackBerries)は、タッチスクリーンとキーボードの両方を備えています。それで、そのようなことは私を元の質問に完全に戻します...両方を一度にどうにかしてどうにかして許可する方法はありますか?
.bind('touchstart mouseup')
解決します(以下のコメントのいずれかに基づく)