32 Stimmen

So stellen Sie fest, ob der Client ein Touch-Gerät ist

Gibt es eine schöne und saubere Methode oder einen Trick, um herauszufinden, ob der Benutzer ein Touch-Gerät benutzt oder nicht?

Ich weiß, es gibt Dinge wie var isiPad = navigator.userAgent.match(/iPad/i) != null;

aber ich frage mich einfach, ob es einen Trick gibt, um generell festzustellen, ob der Benutzer auf einem Touch-Gerät ist? Denn es gibt viel mehr Touch-Geräte und Tablets da draußen als nur iPads.

Ich danke Ihnen.

1voto

j7my3 Punkte 1047

Wenn Sie Modernizr Es ist sehr einfach zu bedienen. Modernizr.touch wie bereits erwähnt.

Ich bevorzuge jedoch eine Kombination aus Modernizr.touch und User-Agent-Tests, nur um sicher zu gehen.

var deviceAgent = navigator.userAgent.toLowerCase();

var isTouchDevice = Modernizr.touch || 
(deviceAgent.match(/(iphone|ipod|ipad)/) ||
deviceAgent.match(/(android)/)  || 
deviceAgent.match(/(iemobile)/) || 
deviceAgent.match(/iphone/i) || 
deviceAgent.match(/ipad/i) || 
deviceAgent.match(/ipod/i) || 
deviceAgent.match(/blackberry/i) || 
deviceAgent.match(/bada/i));

if (isTouchDevice) {
        //Do something touchy
    } else {
        //Can't touch this
    }

Wenn Sie Modernizr nicht verwenden, können Sie einfach die Modernizr.touch obige Funktion mit ('ontouchstart' in document.documentElement)

Beachten Sie auch, dass das Testen des Benutzeragenten iemobile bietet Ihnen eine breitere Palette an erkannten Microsoft-Mobilgeräten als Windows Phone .

Siehe auch diese SO-Frage

0 Stimmen

Ihre Logik zur Erkennung von Benutzer-Agenten ist fehlerhaft: Sie gehen davon aus, dass jedes mobile Gerät einen Touchscreen hat. Einige Blackberry-Modelle (OS <= 7) haben zum Beispiel keinen. Selbst beim iPhone könnte jemand einen augenbewegungsgesteuerten Browser erstellen, der keine Touch-Ereignisse bietet. und schließlich hätten Sie die /Mobile/i Regex anstelle des langen OR.

0 Stimmen

Was ist mit Touchscreens oder Desktops, diese werden nicht erkannt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X