2012-12-05 18 views
5

Zbudowałem maskę czasową w JavaScript, która działa doskonale na komputery PC, Mac, iPhone i iPady, ale nie działa konsekwentnie w większości telefonów z systemem Android (wolałbym nie wchodzić w szczegóły dlaczego ta funkcja nie działa konsekwentnie w systemie Android), więc wyłączam ją. Dla Samsunga wbudowany selektor czasu HTML5 działa świetnie.Sprawdź, czy przeglądarka obsługuje timepicker HTML5

Dla telefonów z systemem Android chciałbym wykorzystać narzędzia do wybierania czasu HTML5, gdy dostępne są przeglądarki macierzyste przeglądarki (np. Dla nowoczesnych telefonów Samsung).

wiem, że mogę wykryć czy przeglądarka obsługuje typy wejściowych date/datetime, ale to nie musi oznaczać, że przeglądarka obsługuje próbnik czasu (Dla każdego, kto wątpi tego testu z HTC EVO 3D, jak tylko jeden przykład.) To pytanie (Detect browser's native date/time pickers) wskazuje, że jeśli typ czasu jest obsługiwany, to przeglądarka zaimplementowała selektor czasu, ale jest to niepoprawne.

Mam świadomość modernizatora, ale nie widzę sposobu, aby zweryfikować, czy przeglądarka obsługuje obiekt timepicker.

Tak więc z tymi informacjami w tle. Czy ktoś wie o sposobie sprawdzenia, czy przeglądarka zaimplementowała selektor czasu?

+0

Co masz na myśli, _ "rzeczywiście sprawdzić, czy przeglądarka obsługuje timepicker." _? Właśnie to robi modernizator. – Cerbrus

+0

Może wypróbujesz to samo, co sugerowane rozwiązanie w zadawanym pytaniu, ale spróbujesz ustawić datę i przeczytać ją również? Jeśli zwrócona data powinna obsługiwać typ wejścia. – Rik

+0

_ "faktycznie sprawdza, czy przeglądarka obsługuje timepicker" _ = Nie tylko, że przeglądarka obsługuje , ale że gdy użytkownik kliknie pole , to ** pojawia się kontrolka selektora czasu ** – SemanticZen

Odpowiedz

1

Twierdzę, że najbezpieczniej jest założyć, że nie jest obsługiwana <input type="date">. Na dzień dzisiejszy (początek 2016 r.) Rzeczywisty interfejs użytkownika selektora dat jest wciąż bardzo niespójny w różnych przeglądarkach. Jeśli nie tworzysz konkretnego podzbioru przeglądarek, i tak będziesz potrzebował JavaScript.

Referencje:

+0

To jest w zasadzie to, co zrobiłem. Używam type = "date" na urządzeniach z systemem iOS i używam jQuery datapicker na wszystkich innych urządzeniach – SemanticZen

1

Najlepszym rozwiązaniem byłoby założenie, że przeglądarki obsługujące standard <input type="date"> również zaimplementowały dla niego selektor czasu.
(o ile mi wiadomo, jest to przypadek, co punktem będzie tam we wspieraniu type="date", jeśli nie mają rozsądny sposób, aby wprowadzić datę?)

To dlatego, że nie ma sposobu, aby sprawdzić jeśli przeglądarka faktycznie pokazuje czasomierz. Oprócz czeków modernizacyjnych, naprawdę nic nie możesz zrobić.

+2

Niestety to złe założenie. – SemanticZen

+1

Istnieją przeglądarki, które nie mają selektora czasu, nawet jeśli obsługują wejścia 'date'? Obawiam się, że naprawdę nie masz innego wyjścia, jak ufać przeglądarkom. – Cerbrus

+1

Niestety tak jest. Więc wydaje się, że opcje 1. zakładają, że wszystkie telefony z Androidem nie obsługują programów typu pick-uper lub 2. wykrywają każde urządzenie Android/telefon obsługujące telefon, które obsługuje wybieranie w czasie (za pośrednictwem agenta użytkownika) ... 2 złe opcje – SemanticZen