Wie zu erkennen, wenn ein Gerät über Maus-Unterstützung?
Derzeit nutze ich den folgenden test (entnommen aus Modernizr) zu erkennen, touch-Unterstützung:
function is_touch_device() {
var bool;
if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
bool = true;
} else {
injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function(node) {
bool = node.offsetTop === 9;
});
}
return bool;
}
Aber einige Geräte sind sowohl für touch-und Maus-driven, also möchte ich eine seperate Funktion zum erkennen, ob ein Gerät über Maus-Unterstützung. Was ist ein guter Weg, um diese überprüfung zu tun?
Letztlich meine Absicht ist es, in der Lage, das zu tun diese:
if(is_touch_device())
if(has_mouse_support())
if(is_touch_device() && has_mouse_support())
Während Sie keine Antwort auf Ihre Frage explizit zu, ich fand diesen Artikel interessant wrt touch vs. Maus-Unterstützung: html5rocks.com/en/mobile/touchandmouse
Ungetestet (und funktioniert nur, wenn die Maus tatsächlich bewegt wird): var Maus= false; Fenster.onmousemove = function(){Maus= true}
Clever, ich denke, dass sollte funktionieren, aber darauf wartet, dass ein mehr getestet, Antwort falls jemand eine Lösung bekannt ist. Edit: das ist wahr, es wird falsch positiv, wenn die Maus nicht mehr bewegen kann, hmmm.
wenn jemand nie wackelt die Maus, die Sie wohl lieber andere Modi der Interaktion sowieso...
Mhm. Nach html5rocks.com/en/mobile/touchandmouse/#toc-1 meine Lösung nicht funktioniert. Verdammt 🙂 Hier ist eine lange Diskussion über das Thema: github.com/Modernizr/Modernizr/issues/869 Scheint, wie es gibt nicht eine gute Lösung
Ungetestet (und funktioniert nur, wenn die Maus tatsächlich bewegt wird): var Maus= false; Fenster.onmousemove = function(){Maus= true}
Clever, ich denke, dass sollte funktionieren, aber darauf wartet, dass ein mehr getestet, Antwort falls jemand eine Lösung bekannt ist. Edit: das ist wahr, es wird falsch positiv, wenn die Maus nicht mehr bewegen kann, hmmm.
wenn jemand nie wackelt die Maus, die Sie wohl lieber andere Modi der Interaktion sowieso...
Mhm. Nach html5rocks.com/en/mobile/touchandmouse/#toc-1 meine Lösung nicht funktioniert. Verdammt 🙂 Hier ist eine lange Diskussion über das Thema: github.com/Modernizr/Modernizr/issues/869 Scheint, wie es gibt nicht eine gute Lösung
InformationsquelleAutor TK123 | 2014-01-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine CSS-media für genau das!
Können Sie überprüfen, ob irgendein Gerät hat eine Maus, indem man den Wert der
pointer
CSS-media-Funktion:Weil es die CSS, die Sie nicht sogar brauchen, um die JavaScript verwenden:
InformationsquelleAutor josemmo
Ich bin derzeit mit den folgenden (jQuery), und ich habe nicht gefunden, keine Fehler, noch auf bestimmte Geräte
Erklärung: Mäuse (auch touch-screen-laptops) erste Feuer mousemove, bevor Sie feuern können touchstart und hasMouse auf TRUE gesetzt ist. Touch-Geräte (auch zum Beispiel iOS, die feuert mousemove) ERSTE Feuer touchstart auf klicken Sie auf, und dann mousemove. Dann ist der Grund, warum hasMouse wird auf FALSE gesetzt werden.
Der einzige Haken ist, dass dies hängt davon ab, Benutzer-Interaktion, der Wert wird nur korrekt sein, nach der Maus verschieben oder touchstart so nicht trauen zu verwenden, die beim laden der Seite.
InformationsquelleAutor Hacktisch
Als in der Frage genannten Kommentare, die speziell auf https://github.com/Modernizr/Modernizr/issues/869, es gibt keine gute Antwort noch.
Was über die Prüfung auf das Vorhandensein der Fenster.MouseEvent als diesem Kommentar schlägt?
Umschreibung von ein paar Kommentare unter der, die du verlinkt: inkonsistente Verhalten mit tablets, insbesondere das iPad und Surface
InformationsquelleAutor drzaus
Dies ist der code von einem Freund/Kollege von mir und er stützte ihn ab von: http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
InformationsquelleAutor DeveloperJRowe
Gibt es keine unmittelbare Möglichkeit, zu wissen, Sie müssen warten, bis ein touch-event oder ein Maus-Ereignis.
Vorausgesetzt, Sie wollen zu erkennen entweder Maus oder touch können Sie Folgendes: hören
touchstart
undmousemove
(letzteres kann Feuer auf touch-Geräten ohne eine tatsächliche Maus). Je nachdem was man feuert zuerst ist zu 99% gebunden werden, was du bist suchen für.Diese nicht in Betracht, Geräte, die tatsächlich beides haben.
InformationsquelleAutor Sjeiti
Antwort von @josemmo ist nicht für mich arbeiten: auf android-Handy mit der Maus befestigt
matchMedia('(pointer:fine)').matches
nicht entspricht.Glücklicherweise habe ich erfolgreich mit einem anderen media-Abfrage:
hover
.InformationsquelleAutor johndoe