В настоящее время я использую $.browser.webkit
и $.browser.msie
потому что типы ввода между браузерами имеют множество уникальных отличий в пользовательском интерфейсе, которые мне нужно учитывать.
В частности: Chrome меняет свой диапазон на слайдер, IE не работает; и я должен поместить spinner в тип времени IE, Chrome покрывает это. Есть и другие, но это те, с которыми мне приходится иметь дело больше всего.
Каков предпочтительный способ проверки этих различий, а не использование теста переноса migrate lib? (Я знаю, что могу напрямую обращаться к пользовательскому агенту, но я бы предпочел обратиться к пользовательскому интерфейсу, чтобы узнать, нужно ли мне добавить счетчик или слайдер и т.д.).
Короткий ответ, у mplungjan был ответ, который был близок, но не тот, в чем я нуждался. Если вы посмотрите на IE11 vs Chrome, у которого есть поддерживаемая функция, вы можете увидеть, где они оказывают поддержку полностью по-разному. Таким образом, мое решение закончилось тем, что вы остаетесь с migrate lib, чтобы обнаружить браузер и версию, а затем мой код переопределяет рендеринг в браузерах, которые в нем нуждаются.
Это означает, что я буду хранить словарь браузеров и реализованные функции, поэтому мой код может разумно переопределить, поскольку словарь диктует.
Что касается случая, когда функция не поддерживается, я просто продолжу использовать стандартный тест для функции, которая сработала, и mplungjan связан с одним из самых простых способов тестирования. Не самое лучшее, но самое легкое.
Переключение на Twitter Bootstrap и пользовательский интерфейс Angular.JS уменьшили часть этой странности, используя другие решения для людей.