Obecnie używam JavaScript do wykrywania urządzeń mobilnych w mojej witrynie, to pozwala mi wyświetlać różne treści dla użytkowników telefonów komórkowych lub stacjonarnych.Jakie są sprawdzone metody wykrywania współczynnika pikseli/gęstości?
Obecnie używam window.devicePixelRatio
i screen.width
wypracować jeśli użytkownik czy na urządzeniu przenośnym lub nie, jak tak:
var isMobileScreenWidth = ((screen.width/window.devicePixelRatio) < 768)
768px
jest punkt, w którym możemy zdefiniować mobilny lub stacjonarny więc 767 i poniżej telefon komórkowy i 768 i wyżej to komputery stacjonarne.
Działa to doskonale, ale mam ostatnio natknąć problem z Firefoksem, gdy Firefox jest powiększony i obecnie zmienia window.devicePixelRatio
, więc:
zoom = 30%, window.devicePixelRatio = 0.3
zoom = 100%, window.devicePixelRatio = 1.0
zoom = 300%, window.devicePixelRatio = 3.0
To teraz sprawia mi problem, ponieważ każdy użytkownik, który powiększ przeglądarkę na Firefoksie pobierz mobilną wersję strony.
Zastanawiam się, czy ktoś wie o innym lub lepszym sposobie uzyskania gęstości pikseli, która jest oddzielna od przeglądarek komputerowych.
Używam również niewielkiej ilości detekcji agenta użytkownika, ale ponieważ jest to ogromne zadanie, aby nadążyć za stale zmieniającą się listą mobilnych agentów użytkownika, nie jest możliwe, żebym zależał zarówno od rozdzielczości ekranu, jak i od użytkownika agent w tym samym czasie.
Jeśli ktoś ma jakieś pomysły na ten temat i może pomóc, to byłoby wspaniale.
UPDATE:
Właśnie natknąć to:
window.screen.availWidth/document.documentElement.clientWidth
to szybkie trochę matematyki jest sugerowane w tym poście:
window.devicePixelRatio does not work in IE 10 Mobile?
Ja testowałem go i działa w Firefoksie i rozwiązuje mój problem, ale niestety teraz powoduje problem w Chrome, więc:
Chrome zoom = 100%,
window.devicePixelRatio = 1.0,
window.screen.availWidth/document.documentElement.clientWidth = 3.0
Nie mogę znaleźć solidnego rozwiązania, które działa na wszystko.
Nie powinieneś używać współczynnika pikseli urządzenia do sprawdzania urządzenia mobilnego: niektóre urządzenia inne niż mobilne to "siatkówka" (iPad, macbook pro ...) i pokażą style mobilne. używaj go tylko do obrazów HD. –
@ Yukulélé Widzę twoją troskę. Właśnie dlatego podzieliłem 'screen.width' na' window.devicePixelRatio', a następnie sprawdziłem, czy wynik jest mniejszy niż "768px" (szerokość iPada). To uniemożliwiłoby większości urządzeń mobilnych wyświetlanie stylu mobilnego. Chociaż niektóre tablety, takie jak Kindle Fire, pokazywały style mobilne, ponieważ są to mniejsze tablety. Nie uważałem tego za problem, ponieważ style mobilne wyświetlały się całkiem dobrze w przypadku tych urządzeń. – lukehillonline