Проверка поддержки <input type='date'> в браузере: решение

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для проверки поддержки типа 'date' элемента <input>, вам потребуется создать новый элемент и назначить ему тип 'date'. С использованием JavaScript можно узнать, сохранил ли элемент назначенный ему тип. Если тип поменялся на 'text', значит, браузер не поддерживает 'date'. Вот соответствующий код:

JS
Скопировать код
var input = document.createElement('input');
input.type = 'date';
if (input.type === 'date') {
    // Успех! Браузер поддерживает 'date'
} else {
    // Провал. Поддержки 'date' нет
}

Отслеживание свойства input.type позволяет надёжно определить поддержку функции.

Кинга Идем в IT: пошаговый план для смены профессии

Расшифровка секретного кода: Расширенная проверка функциональности

Если вы сомневаетесь в точности реализации, проведите ее проверку. Задайте элементу неверное значение и увидьте, как на это отреагирует браузер:

JS
Скопировать код
var input = document.createElement('input');
input.setAttribute('type', 'date');
input.setAttribute('value', 'not-a-date');

if (input.value !== 'not-a-date') {
    // Поддержка уже установлена, браузер обработал недопустимое значение
} else {
    // Поддержки нет, значение осталось некорректным
}

Задавая искусственные данные и проверяя их обработку, можно достоверно судить о наличии поддержки.

Мы верим в оптимальное поведение

Так же, как происходит с задержками в доставке, иногда браузеры могут утверждать что поддерживают 'date', но в процессе использования могут возникнуть ошибки. Нам не достаточно только слов, нужно убедиться в правильности функционирования на практике:

  1. Заявление о поддержке 'date' — это только начало. Проверяем на практике.
  2. Используйте неверные значения для проверки корректности реакции браузера.
  3. Проверьте различные аспекты, такие как атрибуты min, max и step.

Если дверь не открывается, ищем другие пути: Разработка альтернативных решений

Если браузер не поддерживает элементы ввода 'date', мы разработаем запасной вариант. Например, библиотека jQuery UI Datepicker предложит пользователю удобный интерфейс для выбора даты:

JS
Скопировать код
if (input.type !== 'date') {
    // Активируем jQuery UI Datepicker
    $(input).datepicker();
}

Альтернативное решение активируется только если основной метод неуспешен, и надежно справляется с задачей.

Поиск функциональности

Вместо опоры на версию браузера, мы используем подход, основанный на проверке наличия функциональности, оставаясь готовыми к будущим изменениям:

  • Проверка наличия функций важнее предположения о поддержке.
  • Функциональные тесты гарантируют качество вашей работы.
  • Обнаружение возможностей начинается с момента готовности документа или загрузки страницы.

Визуализация

Можно представить <input type='date'> как "трюк", который браузер способен выполнить, а JavaScript — как способ проверить это:

Старый браузер: ❌ (Придерживается старых методов)

HTML
Скопировать код
<input type="text"> // Ах да, помню времена, когда даты надо было вводить вручную...

Современный браузер: ✅ (Овладел новыми фокусами)

HTML
Скопировать код
<input type="date"> // Посмотрите, теперь я умею вводить даты автоматически!

На JavaScript будет проведена проверка браузера на выполнение этого "трюка":

JS
Скопировать код
if (document.createElement('input').type === 'date') {
  console.log('👍'); // Браузер умеет делать трюк!
} else {
  console.log('👎'); // Видимо, старые методы все-таки недурны
}

В стремлении к универсальному пользовательскому опыту

Если браузер не поддерживает <input type='date'>, мы демонстрируем свою компетенцию:

  • Определите есть поддержка типа 'date' или нет.
  • Реализуйте надёжное обнаружение функциональности.
  • Подготовьте альтернативные варианты, например, jQuery UI Datepicker, чтобы избежать ошибок.
  • Применяйте "заплату" только при необходимости, обеспечивая высокую производительность.
  • Оставайтесь в курсе обновлений браузеров, чтобы поддерживать актуальность вашего приложения.

Полезные материалы

  1. Can I use... Support tables for HTML5, CSS3, etc — Обзор поддержки типа элемента ввода даты в HTML5.
  2. MDN Веб-документация: Типы input — Обзор различных типов <input>.
  3. Обнаружение функций HTML5 – Погружение в HTML5 — Углубление в технику обнаружения поддержки типов ввода HTML5.
  4. HTML Стандарт — Официальный стандарт для типа ввода 'date'.
  5. GitHub – Modernizr/Modernizr — Инструмент обнаружения возможностей HTML5 и CSS3.
  6. Stack Overflow: Как проверить поддержку input type date браузером — Обсуждение и советы сообщества разработчиков по определению поддержки функций.
  7. GitHub – jonstipe/date-polyfill — Полифилл для обеспечения поддержки ввода дат в браузерах, не предоставляющих такой функциональности.