タッチ(クリックすると画面が非表示になります)とマウス(ホバープレビューに大きく依存)のインターフェイスが非常に異なるWebアプリケーション(興味深いテキストのページがあるWebサイトではありません)を開発しています。ユーザーにマウスがなく、適切なインターフェースを提示できないことをどのように検出できますか?マウスとタッチの両方(一部のノートブックのように)を使用する人のためにスイッチを残すつもりです。
ブラウザーのタッチイベント機能は、実際にはユーザーがタッチデバイスを使用していることを意味しません(たとえば、Modernizrはそれを切り取りません)。質問に正しく答えるコードは、デバイスにマウスがある場合はfalseを返し、そうでない場合はtrueを返します。マウスとタッチを備えたデバイスの場合、falseを返します(タッチのみではありません)。
余談ですが、私のタッチインターフェイスはキーボードのみのデバイスにも適している可能性があります。そのため、検出したいマウスが不足していることになります。
必要性をより明確にするために、私が実装しようとしているAPIは次のとおりです。
// Level 1
// The current answers provide a way to do that.
hasTouch();
// Returns true if a mouse is expected.
// Note: as explained by the OP, this is not !hasTouch()
// I don't think we have this in the answers already, that why I offer a bounty
hasMouse();
// Level 2 (I don't think it's possible, but maybe I'm wrong, so why not asking)
// callback is called when the result of "hasTouch()" changes.
listenHasTouchChanges(callback);
// callback is called when the result of "hasMouse()" changes.
listenHasMouseChanges(callback);