Проверьте, поддерживает ли браузер средство выбора времени HTML5.

Я создал маску времени на JavaScript, которая отлично работает на ПК, Mac, iPhone и iPad, но не работает стабильно на большинстве телефонов Android (я бы предпочел не вдаваться в подробности, почему эта функция не может работать стабильно). в Android), поэтому я отключил его. Для Samsung отлично работает встроенный инструмент выбора времени HTML5.

Для телефонов Android я хотел бы использовать средства выбора времени HTML5, когда доступны собственные средства выбора времени браузера (например, для современных телефонов Samsung).

Я знаю, что могу определить, поддерживает ли браузер типы ввода date/datetime, но это не обязательно означает, что браузер поддерживает средство выбора времени (для тех, кто сомневается в этом, проверьте его с помощью HTC EVO 3D, как один из примеров). Этот вопрос ( Определить собственные средства выбора даты/времени браузера ) указывает, что если тип времени поддерживается, тогда браузер реализовал средство выбора времени, но это неправильно.

Я знаю о modernizr, но не вижу способа проверить, поддерживает ли браузер средство выбора времени.

Итак, с этой справочной информацией. Кто-нибудь знает способ определить, реализован ли браузер для выбора времени?


person SemanticZen    schedule 05.12.2012    source источник
comment
Что вы имеете в виду, на самом деле проверьте, поддерживает ли браузер средство выбора времени? Это именно то, что делает modernizr.   -  person Cerbrus    schedule 05.12.2012
comment
Может быть, попробовать то же самое, что и предложенное решение в вопросе, на который вы ссылаетесь, но попробуйте установить дату и прочитать ее? Если дата возвращена, она должна поддерживать тип ввода.   -  person Rik    schedule 05.12.2012
comment
на самом деле проверьте, поддерживает ли браузер средство выбора времени = Не только то, что браузер поддерживает ‹input type='time'›, но и то, что когда пользователь щелкает поле ‹input type='time'›, открывает окно выбора времени   -  person SemanticZen    schedule 05.12.2012
comment
@Rik: Насколько я знаю, если вы установите .value в любом поле ввода, оно просто вернет это значение при его получении, независимо от того, поддерживается ли тип ввода или нет. Пример скрипки. Итак, я не думаю, что можно проверить, действительно ли ввод вызывает элемент управления выбором времени.   -  person Cerbrus    schedule 05.12.2012
comment
@Cerbrus А, я вижу, что интересно, Chrome не возвращает значение Fiddle   -  person Rik    schedule 06.12.2012
comment
@Rik: Понятно, да. Ну, это один из браузеров, где вы, по-видимому, можете это проверить.   -  person Cerbrus    schedule 06.12.2012
comment
Всего одна безумная идея: согласно этого нет никакого способа получить доступ к элементам теневого дома внутри файла <input type="date">. Но если бы это было возможно, вы могли бы протестировать внутреннюю работу элемента, чтобы проверить, есть ли средство выбора даты. Кроме того, я пытался использовать псевдоэлементы с префиксом поставщика, такие как -webkit-calendar-picker-indicator, чтобы понять это, но безуспешно. Надеюсь, поможет.   -  person rvidal    schedule 05.06.2013


Ответы (2)


Я бы сказал, что безопаснее всего предположить, что <input type="date"> не поддерживается. На сегодняшний день (начало 2016 года) фактический пользовательский интерфейс для выбора даты по-прежнему очень несовместим в разных браузерах. Если вы не разрабатываете для очень конкретного подмножества браузеров, вам все равно понадобится JavaScript.

Использованная литература:

person rvidal    schedule 20.01.2016
comment
Это в основном то, что я сделал. Я использую type=date на устройствах iOS и использую сборщик данных jQuery на всех остальных устройствах. - person SemanticZen; 22.01.2016

Лучше всего было бы предположить, что браузеры, поддерживающие <input type="date">, также реализовали для него средство выбора времени.
(Насколько я знаю, это так, какой смысл поддерживать type="date", если бы он не нет разумного способа ввести дату?)

Это связано с тем, что нет способа проверить, действительно ли браузер показывает таймер. Кроме проверки модернизации, вы ничего не можете сделать.

person Cerbrus    schedule 05.12.2012
comment
К сожалению, это плохое предположение - person SemanticZen; 05.12.2012
comment
Итак, есть браузеры, в которых нет выбора времени, даже если они поддерживают ввод date? Боюсь, у вас действительно нет другого выбора, кроме как доверять браузерам. - person Cerbrus; 05.12.2012
comment
К сожалению, это так. Таким образом, варианты, по-видимому, следующие: 1. предположим, что все телефоны Android не поддерживают средства выбора времени, или 2. обнаруживают каждый Android-устройство телефона/оператора, которое поддерживает средство выбора времени (через пользовательский агент)... 2 плохих варианта - person SemanticZen; 05.12.2012
comment
Боюсь, что так. Хотя на самом деле это не тот ответ, который вам нужен, не могли бы вы пометить его как ответ? (Иногда, к сожалению, правильный ответ — нет, это невозможно.) - person Cerbrus; 05.12.2012
comment
Если не появится лучшего ответа, этот, к сожалению, будет «лучшим» ответом, и я отмечу его как таковой. Подождем пару дней... Надежда вечна - person SemanticZen; 05.12.2012