Обнаружение поддержки определенных функций HTML 5 с помощью jQuery

StackOverflow https://stackoverflow.com/questions/1657170

  •  11-09-2019
  •  | 
  •  

Вопрос

Я работаю над демонстрационным кодом HTML5, включая такие вещи, как <input type="date" />

В настоящее время это работает корректно в Opera 10 как есть, но любой другой браузер просто отображает обычный текстовый ввод.Затем я использую плагин jQuery.date-input, чтобы переопределить это поведение в браузерах, которые его не поддерживают.

Проблема в том, что jQuery работает и в Opera, поэтому в Opera я получаю два средства выбора даты в календаре (один из браузера, один из jQuery).

Я могу обойти это сейчас, используя if (window.opera) - но есть ли какой-нибудь способ, используя, скажем, jQuery.support, чтобы я мог надежно определить, поддерживает ли текущий браузер определенную функцию HTML5 или нет?

Это было полезно?

Решение

я бы взглянул на Модернизр.Это библиотека Javascript с открытым исходным кодом, лицензированная MIT, которая обнаруживает поддержку многих функций HTML5/CSS3, и она ДЕЙСТВИТЕЛЬНО крошечная (сжатие 7 КБ).Чтобы использовать его, просто:

<script src="modernizr.min.js"></script> 

В рамках <head> вашего документа.После этого у него есть множество функций для проверки того, что вам нужно.Пример:

if (Modernizr.canvas) { 
     // do stuff
}

Существует множество других способов проверить наличие конкретной функции HTML5/CSS3, которая вам нужна. Посетите их сайт чтобы получить его и просмотреть документы.

Другие советы

Да, проверка конкретного браузера — это совсем не то, что вам нужно.Иногда это полезно для обнаружения необходимости применить обходные пути для ошибок браузера (обычно с IE), но если вы хотите узнать, поддерживает ли браузер ту или иную функцию, просто проверьте ее.

Некоторые вещи легче унюхать, чем другие.Для вашего примера поддержки ввода даты это очень просто.А input.type Свойство сообщает вам, какой тип элемента управления считает браузер;если ввод даты не поддерживается, вы получите 'text'.

<input type="date" class="dateinput" />

if ($('.dateinput')[0].type!=='date') {
     $('.dateinput').addSomeDateScriptingPluginThing();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top