Есть ли способ определить, использует ли текущий пользователь iPad iPad с помощью jQuery / JavaScript?
167
Есть ли способ определить, использует ли текущий пользователь iPad iPad с помощью jQuery / JavaScript?
Обнаружение iPad
Вы должны быть в состоянии обнаружить пользователя iPad, взглянув на userAgent
свойство:
var is_iPad = navigator.userAgent.match(/iPad/i) != null;
Обнаружение iPhone / iPod
Аналогично, platform
свойство для проверки устройств, таких как iPhone или iPod:
function is_iPhone_or_iPod(){
return navigator.platform.match(/i(Phone|Pod))/i)
}
Ноты
В то время как это работает, вы должны вообще избегать специфичного для браузера обнаружения, поскольку это часто может быть ненадежным (и может быть подделано). В большинстве случаев предпочтительнее использовать фактическое обнаружение объектов , что можно сделать с помощью библиотеки, такой как Modernizr .
Как указано в ответе Бреннена , могут возникнуть проблемы при выполнении этого обнаружения в приложении Facebook. Пожалуйста, смотрите его ответ для обработки этого сценария.
Связанные ресурсы
Несмотря на то, что принятое решение является правильным для iPhone, оно будет неверно объявлять оба варианта
isiPhone
иisiPad
быть верным для пользователей, посещающих ваш сайт на их iPad из приложения Facebook.Общепринято, что на устройствах iOS есть пользовательский агент для Safari и пользовательский агент для UIWebView. Это предположение неверно, так как приложения для iOS могут и действительно настраивают свой пользовательский агент. Основным нарушителем здесь является Facebook.
Сравните эти строки пользовательских агентов с iOS-устройств:
Обратите внимание, что на iPad строка пользовательского агента Facebook UIWebView содержит «iPhone».
Старый способ идентифицировать iPhone / iPad в JavaScript:
Если бы вы использовали этот подход для обнаружения iPhone и iPad, вы бы получили IS_IPHONE и IS_IPAD, которые оба были бы верны, если пользователь пришел из Facebook на iPad. Это может создать какое-то странное поведение!
Правильный способ идентифицировать iPhone / iPad в JavaScript:
Мы объявляем IS_IPHONE ложным на iPad, чтобы скрыть странный пользовательский агент Facebook UIWebView для iPad. Это один из примеров того, как сниффинг агента пользователя ненадежен. Чем больше приложений для iOS настраивают свой пользовательский агент, тем больше проблем будет с прослушиванием пользовательского агента. Если вы можете избежать прослушивания пользовательского агента (подсказка: CSS Media Queries), ДЕЛАЙТЕ ЭТО.
источник
/iPh?o(ne|d)/i
, или/(iPhone|iPod)/i
если вы собираетесь выпустить iPhod: P.Я использую это:
источник
Я использую это:
источник