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.

27voto

mplungjan Punkte 153338

Sie können die folgende JS-Funktion verwenden:

function isTouchDevice() {
   var el = document.createElement('div');
   el.setAttribute('ongesturestart', 'return;'); // or try "ontouchstart"
   return typeof el.ongesturestart === "function";
}

Quelle: Erkennung des berührungsbasierten Surfens .

Bitte beachten Sie, dass der obige Code nur testet, ob der Browser Touch-Unterstützung hat, nicht das Gerät.

Verwandte Links:

Es kann eine Entdeckung geben in jquery für Mobiltelefone y jtouch

1 Stimmen

Funktioniert für das iPhone, aber was ist mit Androiden, BlackBerrys, Symbian, WebOS...?

0 Stimmen

Kein nützlicher Kommentar. Funktioniert nicht wie? Haben Sie alert(typeof el.ongesturestart) oder was haben Sie versucht? Welches Gerät? Welches Betriebssystem? Ein Downvoting ohne eine konstruktive Nachricht hilft niemandem. Außerdem ist dieser Beitrag 2 Jahre alt. Die Welt hat sich seither verändert

0 Stimmen

Gibt auf dem iPhone mit iOS 7.0.6 und Safari einen falschen Wert zurück.

14voto

Gcoop Punkte 3344

Einbeziehen. Modernisierer die eine kleine Bibliothek zur Erkennung von Merkmalen ist. Dann können Sie etwas wie unten verwenden.

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

2 Stimmen

Merkmalserkennung > UA-Prüfung.

14voto

Pratswinz Punkte 1438
if ("ontouchstart" in document.documentElement)
{
  alert("It's a touch screen device.");
}
else
{
 alert("Others devices");
}

Der einfachste Code, den ich gefunden habe, nachdem ich viel hier und dort gestöbert habe

0 Stimmen

Ich würde dem nicht trauen, da es auf meinem Mac, der kein Touch-Gerät ist, richtig angezeigt wird. Dies fragt einfach, ob der Browser es unterstützt denke ich

4voto

Julian F. Weinert Punkte 7237

Verwendung von document.createEvent("TouchEvent") wird auf Desktop-Geräten nicht funktionieren. Sie können es also innerhalb einer if-Anweisung verwenden.

Beachten Sie, dass diese Methode auf Geräten, die keine Touch-Funktion haben, zu Fehlern führen kann. Ich würde die Überprüfung auf ontouchstart in document.documentElement .

2voto

Safran Ali Punkte 4449

Sehen Sie sich das an Beitrag gibt es ein wirklich schönes Code-Snippet für das, was zu tun ist, wenn Touch-Geräte erkannt werden oder was zu tun ist, wenn das Touchstart-Ereignis aufgerufen wird:

$(function(){
  if(window.Touch) {
    touch_detect.auto_detected();
  } else {
    document.ontouchstart = touch_detect.surface;
  }
}); // End loaded jQuery
var touch_detect = {
  auto_detected: function(event){
    /* add everything you want to do onLoad here (eg. activating hover controls) */
    alert('this was auto detected');
    activateTouchArea();
  },
  surface: function(event){
    /* add everything you want to do ontouchstart here (eg. drag & drop) - you can fire this in both places */
    alert('this was detected by touching');
    activateTouchArea();
  }
}; // touch_detect
function activateTouchArea(){
  /* make sure our screen doesn't scroll when we move the "touchable area" */
  var element = document.getElementById('element_id');
  element.addEventListener("touchstart", touchStart, false);
}
function touchStart(event) {
  /* modularize preventing the default behavior so we can use it again */
  event.preventDefault();
}

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