2013-03-12 17 views
11

Wyświetlam pasek powiadomień na mojej stronie internetowej, i szczerze mówiąc, nie działa on dobrze, gdy jest na urządzeniu mobilnym. Chciałbym wyświetlić pasek TYLKO dla użytkowników komputerów stacjonarnych.Najprostszy sposób określenia, czy użytkownik jest na urządzeniu mobilnym

Jaki jest najłatwiejszy sposób ustalenia, czy użytkownik jest na komputerze lub urządzeniu mobilnym?

+4

myślę, że należy użyć zapytań o media w celu ustalenia rzeczywistej zdolności zamiast z obsługą agentów w celu ustalenia rzekomej możliwości. –

+1

Naprawdę nie ma. Powinieneś odkryć, * dlaczego * to nie działa (jakiej funkcji brakuje w telefonach komórkowych) i korzystać z funkcji wykrywania i zapytań o media, aby określić, czy ma się wyświetlać. – Chad

+0

Zamiast wykrywać telefon komórkowy i komputer, myślę, że w twoim scenariuszu lepiej jest wykryć rozdzielczość ekranu. – lbstr

Odpowiedz

6

Czek kliencka jest „najprostszym”, choć można łatwo zatrudnić CSS3 media queries

Oto przykład, który sprawdza, iPhone, Android i Blackberry; można łatwo dodać inne przeglądarki mobilne.

var is_mobile = !!navigator.userAgent.match(/iphone|android|blackberry/ig) || false; 
+0

Cóż, nie spadłem (wygląda na to, że nikt nie zrobił tego teraz ...), ale twoja regularna ekspresja jest trochę skąpa. – Pointy

+0

Dość uczciwe, nie próbowałem objąć wszystkich przeglądarek mobilnych, podając tylko przykład tego, jak można to zrobić. Przypuszczam, że powinienem był o tym powiedzieć. –

+1

@Pointy very. Nie próbowałem na przykład na Windows Phone. Być może zapytania o media są najlepsze, ponieważ każda przeglądarka teraz je wdraża. –

7

Uważam, że najlepiej użyć funkcji wykrywania. Użyj Modernizr, aby wykryć, czy jest to urządzenie dotykowe. Można robić takie rzeczy jak:

var mousedown = 'mousedown'; 

if (Modernizr.touch) { 
    mousedown = 'touchstart'; 
} 

$('.foo').on(mousedown, handleMouseDown); 

a następnie użyć CSS mediów zapytań do obsługi szerokości ekranu (i to również łatwe do wykrycia szerokości ekranu z javascript). W ten sposób można prawidłowo obsługiwać urządzenia dotykowe z dużymi ekranami lub urządzenia bez dotykowe z małymi ekranami.

+2

...i możesz ukrywać/pokazywać/modyfikować elementy za pomocą CSS, ponieważ Modernizr dodaje klasę "touch" do elementu '' dla urządzeń dotykowych. Tak więc, '.touch #notificationBar {display: none; } '... – Pointy

0

Jeśli używasz modernizr. klasa "bezdotykowa" zostanie dodana do elementu. Domyślnie możesz ukryć pasek i dodać regułę css, aby wyświetlić pasek, jeśli istnieje klasa "bezdotykowa". Przykład:

domyślnie:

.bar{display:none;}

pulpit:

.no-touch .bar{display:block;} 
+1

, które mogą nie być już optymalne, ponieważ istnieją urządzenia dotykowe, które nie są jawnie mobilne -> zobacz surface pro (aby być uczciwym może to być tablet, który jest mobilny), dotknij laptopy jak lenovo, itp. Jestem pewien, że nadejdzie cały nowy zestaw urządzeń dotykowych – Daemedeor

Powiązane problemy