2010-07-30 10 views

Antwort

1

Chrome ist ein weiterer Browser, der einen ähnlichen Selektor umzusetzen versucht, aber leider wurde es aus entfernt zur Zeit.

Modernizr könnte ein interessantes Erkennungswerkzeug sein, da es auch Berührungsereignisse erkennen kann.

http://www.modernizr.com/docs/#touch

5

Es gibt keine Möglichkeit, dies zu Javascript ohne Rückgriff, derzeit zu erreichen.

Wie @easwee sagte, Modernizr ist eine gut angesehene JS-Bibliothek, die sich auf Feature-Erkennung konzentriert. Sie können den Test touch für Ihren Anwendungsfall verwenden.

Wenn Sie nicht alle Glocken und Pfeifen der Modernizr benötigen, können Sie wie folgt vorgehen:

A) Tag der folgenden JS Laden bereits in Ihrem <body> wie möglich:

<script type="text/javascript"> 
if(!!window.TouchEvent) body.className += " touch-enabled "; 
</script> 

B) Schreiben Sie Ihr CSS. Da Gecko eine Medienabfrage, um Sie über Touch Verfügbarkeit zu informieren, werden Sie die Touch-spezifische CSS tölpeln müssen, etwa so:

BODY.touch-enabled DIV.foo 
{ 
    /* touch-specific CSS */ 
} 

@media screen and (-moz-touch-enabled) 
{ 
DIV.foo 
{ 
    /* touch-specific CSS */ 
} 

} 

Wenn der pro-Selektor Code in beiden Fällen identisch ist, sollte GZIP Einen Teil der Duplizierung optimieren. (Sie verwenden Kompression, hoffe ich.)

2

In Ian Wessmans Antwort funktioniert der Test !!window.TouchEvent falsch. Im aktuellen Desktop ist Chrome (23.0.1271.52, Linux) window.TouchEvent eine Funktion, so dass Ians Code den Browser als berührungsaktiv betrachtet.

Wenn Sie kurzen Code möchten, ist es wahrscheinlich am besten, kopieren Sie die relevant code from Modernizr.

+0

https://github.com/Modernizr/Modernizr/blob/master/feature-detects/touchevents.js – eimaj