Какой из следующих браузеров является мобильным

Обновлено: 01.07.2024

План North American Electric Reliability Corporation по защите критически важной инфраструктуры (NERC CIP) представляет собой набор стандартов.

Структура управления рисками ISO 31000 – это международный стандарт, который предоставляет компаниям рекомендации и принципы для .

Чистый риск относится к рискам, которые находятся вне контроля человека и приводят к убыткам или их отсутствию без возможности получения финансовой выгоды.

Экранированная подсеть или брандмауэр с тройным подключением относится к сетевой архитектуре, в которой один брандмауэр используется с тремя сетями .

Метаморфное и полиморфное вредоносное ПО – это два типа вредоносных программ (вредоносных программ), код которых может изменяться по мере их распространения.

В контексте вычислений Windows и Microsoft Active Directory (AD) идентификатор безопасности (SID) — это уникальное значение, которое равно .

Медицинская транскрипция (МТ) – это ручная обработка голосовых сообщений, продиктованных врачами и другими медицинскими работниками.

Электронное отделение интенсивной терапии (eICU) — это форма или модель телемедицины, в которой используются самые современные технологии.

Защищенная медицинская информация (PHI), также называемая личной медицинской информацией, представляет собой демографическую информацию, медицинскую .

Снижение рисков – это стратегия подготовки к угрозам, с которыми сталкивается бизнес, и уменьшения их последствий.

Отказоустойчивая технология — это способность компьютерной системы, электронной системы или сети обеспечивать бесперебойное обслуживание.

Синхронная репликация — это процесс копирования данных по сети хранения, локальной или глобальной сети, поэтому .

Интерфейс управления облачными данными (CDMI) – это международный стандарт, определяющий функциональный интерфейс, используемый приложениями.

Износ флэш-памяти NAND — это пробой оксидного слоя внутри транзисторов с плавающим затвором флэш-памяти NAND.

Выносливость при записи — это количество циклов программирования/стирания (P/E), которое может быть применено к блоку флэш-памяти перед сохранением .

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

  • Главная
  • Холст
  • Руководство по основам работы с Canvas
  • Каковы требования к браузеру и компьютеру.

Для лучшей производительности Canvas следует использовать в текущей или первой предыдущей основной версии Chrome, Firefox, Edge или Safari. Поскольку Canvas создан с использованием веб-стандартов, он работает на Windows, Mac, Linux, iOS, Android или любом другом устройстве с современным веб-браузером.

Canvas требуется только операционная система, которая поддерживает новейшие совместимые веб-браузеры. Операционная система вашего компьютера должна быть обновлена ​​до последних рекомендуемых обновлений и обновлений безопасности.

Поддерживаемые браузеры

Canvas поддерживает текущую и первую предыдущие основные версии следующих браузеров:

<УЛ>
  • Chrome 98 и 99
  • Firefox 97 и 98 (расширенные версии не поддерживаются*)
  • Край 98 и 99
  • Браузер Respondus Lockdown (поддерживает последние системные требования)
  • Safari 14 и 15 (только Macintosh)
  • Вы можете убедиться, что браузер, который вы используете в данный момент, обновлен, используя инструмент проверки браузера на шаге ниже.

    Всегда следует использовать самую последнюю версию предпочтительного браузера. Ваш браузер сообщит вам, если будет доступна новая версия.

    Примечание. Safari 13.1 и более поздние версии содержат обновление, которое может вызвать проблемы с загрузкой файлов, отображением изображений и воспроизведением предупреждений чата в Canvas. В настоящее время инженеры Canvas работают над решением этой проблемы. До тех пор вы можете избежать ошибок с файлами, изображениями и оповещениями, отключив предотвращение межсайтового отслеживания в Safari при использовании Canvas. Если отключение межсайтового отслеживания не устраняет эти проблемы, попробуйте использовать один из других поддерживаемых браузеров.

    Неподдерживаемый баннер браузера

    Корпоративные расширенные версии браузеров

    Chrome и Firefox предлагают расширенные версии для организаций, управляющих клиентскими рабочими столами. Chrome ESR можно поддерживать в актуальном состоянии с существующей полной версией Chrome в любое время. Однако Firefox ESR обновляется только с каждой седьмой основной версией, из-за чего Firefox ESR перекрывается с устаревшими версиями. На веб-странице Firefox ESR отмечается, что ESR может поддерживаться не во всех веб-приложениях из-за задержки выпуска этой версии. Учреждения, которые используют Firefox ESR, должны рассмотреть возможность развертывания последней версии, чтобы обеспечить наилучшее взаимодействие с пользователем Canvas.

    * Для расширенных версий браузера баннер с предупреждением по-прежнему применяется и отображается в Canvas для любого браузера, версия которого ниже минимальной требуемой версии.

    Известное поведение браузера

    Как и все функции Canvas, наши команды разработчиков уделяют первостепенное внимание непохожему поведению, связанному с браузерами, и некоторые проблемы в предыдущей версии могут остаться нерешенными.Если в предыдущей версии браузера существует поведение, которого нет в текущей версии, лучшим решением будет обновление браузера до новейшей версии.

    Canvas поддерживает Инициативу веб-доступности W3C. Чтобы узнать о поддерживаемых комбинациях средств чтения с экрана и браузера, см. документ о стандартах специальных возможностей Canvas.

    JavaScript

    Для запуска Canvas должен быть включен JavaScript.

    Плагины и расширения для браузера

    Некоторые подключаемые модули и расширения браузера могут конфликтовать с Canvas и влиять на его функциональность. Если вы столкнулись с поведением, которое не позволяет вам просматривать курсы Canvas или участвовать в них, убедитесь, что вы отключили все расширения или подключаемые модули, которые напрямую взаимодействуют с вашим веб-браузером.

    Настройки конфиденциальности браузера

    Чтобы обеспечить безопасность браузера, соблюдайте все политики безопасности браузера, установленные вашим учреждением, особенно если вы используете Canvas на компьютере, предоставленном вашим учреждением.

    <УЛ>
  • Если вы являетесь администратором Canvas, небезопасный контент может быть вызван размещением незащищенного файла JS/CSS за пределами Canvas. Если для вашей учетной записи поддерживаются пользовательские загрузки, вы можете разместить свой файл в редакторе тем Canvas, что устранит любые конфликты браузера.
  • Если вы являетесь преподавателем Canvas и встраиваете уроки Canvas в свой курс, вы можете предотвратить проблемы браузера со смешанным содержимым, используя защищенные URL-адреса руководств Canvas.
  • Известное поведение браузера

    Chrome, Edge, Firefox и Safari используют HTML5 для отображения содержимого веб-сайтов, обеспечивая более быструю и безопасную работу в Интернете. Для лучшей производительности в Canvas содержание курса должно поддерживать HTML5.

    В таких браузерах, как Safari, небезопасный контент никогда не будет отображаться в браузере.

    Однако в Chrome и Firefox у вас есть возможность просматривать небезопасный контент. Помните о возможных ограничениях и с осторожностью просматривайте небезопасный контент.

    Ниже перечислены известные проблемы в Chrome и Firefox, которые могут блокировать или создавать смешанный контент в Canvas.

    Безопасность Chrome

    Безопасность Chrome

    Google Chrome проверяет, что содержимое веб-сайта, которое вы просматриваете, передается безопасно. Если вы посещаете страницу своего курса Canvas, которая связана с небезопасным содержимым, Chrome отобразит значок щита [1] в адресной строке браузера.

    Вы можете обойти ограничение безопасности и все равно отображать содержимое, щелкнув значок щита, а затем нажав кнопку Загрузить небезопасный сценарий [2].

    Разрешения Chrome Media

    Разрешения Chrome Media

    Chrome имеет собственное разрешение мультимедиа в браузере. Чтобы использовать камеру и микрофон вашего компьютера в любой функции Canvas, разрешите доступ к Canvas через настройки разрешения мультимедиа в Chrome. Это приглашение появляется сразу под адресной строкой [1]. Чтобы разрешить доступ, нажмите кнопку Разрешить [2].

    Безопасность Firefox

    Безопасность Firefox

    Firefox проверяет, безопасно ли передается содержимое просматриваемого вами веб-сайта. Если вы посещаете страницу своего курса Canvas, которая связана с небезопасным содержимым, Firefox отобразит замок со значком предупреждения в адресной строке браузера [1].

    Вы можете обойти ограничение безопасности и все равно отображать содержимое, щелкнув замок со значком предупреждения, щелкнув стрелку, чтобы развернуть параметры [2], и выбрав кнопку Отключить защиту на данный момент [3].

    Технические характеристики компьютера

    Для достижения наилучшей производительности вам следует использовать Canvas на компьютере, поддерживающем самые последние версии браузера. Рекомендуется использовать компьютер старше пяти лет с оперативной памятью не менее 1 ГБ.

    Операционная система

    Canvas требуется только операционная система, которая поддерживает новейшие совместимые веб-браузеры. Операционная система вашего компьютера должна быть обновлена ​​до последних рекомендуемых обновлений и обновлений безопасности.

    Скорость Интернета

    Помимо совместимости и веб-стандартов, Canvas был тщательно разработан для работы в средах с низкой пропускной способностью.

    Рекомендуется иметь минимальную скорость Интернета 512 кбит/с.

    Программы чтения с экрана

    <УЛ>
  • Macintosh: VoiceOver (последняя версия для Safari)
  • ПК: JAWS (последняя версия для Chrome и Firefox)
  • ПК: NVDA (последняя версия для Chrome и Firefox)
  • Canvas на мобильных устройствах

    Интерфейс Canvas был оптимизирован для дисплеев настольных компьютеров, поэтому использование Canvas в небольших форм-факторах, таких как телефоны, может быть не очень приятным. Для наилучшего взаимодействия с пользователем загрузите мобильные приложения Canvas. Для мобильных приложений Canvas требуется Android 8.0 или более поздней версии и iOS 13.0 или более поздней версии.

    Canvas предлагает ограниченную поддержку собственных мобильных браузеров на планшетных устройствах. Дополнительные сведения см. в руководстве по ограниченной поддержке мобильных браузеров.

    Посетите магазин Apple или Play, чтобы загрузить мобильные браузеры. Следующие основные браузеры совместимы с мобильными устройствами:

    Обслуживание разных веб-страниц или служб в разных браузерах обычно является плохой идеей. Сеть предназначена для того, чтобы быть доступной для всех, независимо от того, какой браузер или устройство они используют. Существуют способы развития вашего веб-сайта, чтобы постепенно улучшать его, основываясь на доступности функций, а не на определенных браузерах.

    Но браузеры и стандарты несовершенны, и все же есть некоторые крайние случаи, когда необходимо определить браузер. Использование пользовательского агента для обнаружения браузера выглядит просто, но на самом деле это очень сложная задача. Этот документ поможет вам сделать это максимально правильно.

    Примечание. Стоит повторить еще раз: очень редко рекомендуется использовать сниффинг пользовательского агента. Вы почти всегда можете найти лучший, более совместимый способ решения вашей проблемы!

    Соображения перед использованием обнаружения браузера

    При рассмотрении вопроса об использовании строки пользовательского агента для определения того, какой браузер используется, первым делом постарайтесь избежать этого, если это возможно. Начните с попытки определить, почему вы хотите это сделать.

    Вы пытаетесь обойти конкретную ошибку в какой-либо версии браузера?

    Поищите или спросите на профильных форумах: вряд ли вы первый столкнетесь с этой проблемой. Кроме того, эксперты или люди с другой точкой зрения могут подсказать вам, как обойти ошибку. Если проблема кажется необычной, стоит проверить, сообщалось ли об этой ошибке производителю браузера через его систему отслеживания ошибок (Mozilla, WebKit, Blink, Opera). Разработчики браузеров обращают внимание на отчеты об ошибках, и анализ может подсказать другие обходные пути для устранения ошибки.

    Вы пытаетесь проверить наличие определенной функции?

    На вашем сайте должна использоваться определенная веб-функция, которую некоторые браузеры еще не поддерживают, и вы хотите направить этих пользователей на более старый веб-сайт с меньшим количеством функций, но который, как вы знаете, будет работать. Это худшая причина для использования обнаружения пользовательского агента, потому что есть вероятность, что в конечном итоге все другие браузеры догонят. Кроме того, нецелесообразно тестировать каждый из менее популярных браузеров и тестировать эти веб-функции. Вы никогда не должны нюхать пользовательский агент. Вместо этого всегда есть альтернатива обнаружению признаков.

    Вы хотите предоставить различный HTML в зависимости от используемого браузера?

    Обычно это плохая практика, но в некоторых случаях это необходимо. В этих случаях вы должны сначала проанализировать свою ситуацию, чтобы убедиться, что это действительно необходимо. Можно ли предотвратить это, добавив несемантические элементы

    или элементы? Сложность успешного использования обнаружения пользовательского агента стоит нескольких нарушений чистоты вашего HTML. Кроме того, переосмыслите свой дизайн: можете ли вы использовать прогрессивное улучшение или плавные макеты, чтобы избавиться от необходимости делать это?

    Как избежать обнаружения пользовательского агента

    Если вы хотите избежать использования обнаружения пользовательского агента, у вас есть варианты!

    При обнаружении функций вы не пытаетесь выяснить, какой браузер отображает вашу страницу, а вместо этого проверяете, доступна ли конкретная функция, которая вам нужна. Если это не так, вы используете запасной вариант. В тех редких случаях, когда поведение разных браузеров различается, вместо проверки строки пользовательского агента вы должны вместо этого реализовать тест, чтобы определить, как браузер реализует API, и определить, как его использовать. Пример обнаружения признаков выглядит следующим образом. В 2017 году Chrome отключил экспериментальную поддержку просмотра назад в регулярных выражениях, но ни один другой браузер не поддерживал ее. Итак, вы, возможно, подумали сделать это:

    В приведенном выше коде было бы сделано несколько неверных предположений. Во-первых, предполагалось, что все строки пользовательского агента, включающие подстроку "Chrome", относятся к Chrome. Строки UA, как известно, вводят в заблуждение. Затем предполагалось, что функция ретроспективного просмотра всегда будет доступна, если в качестве браузера используется Chrome. Агентом может быть более старая версия Chrome, выпущенная до того, как была добавлена ​​поддержка, или (поскольку в то время эта функция была экспериментальной) это может быть более поздняя версия Chrome, в которой она была удалена. Самое главное, предполагалось, что никакие другие браузеры не будут поддерживать эту функцию. Поддержка могла быть добавлена ​​в другие браузеры в любое время, но этот код продолжал бы выбирать второстепенный путь.

    Подобных проблем можно избежать, проверив вместо этого поддержку самой функции:

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

    Наконец, приведенные выше фрагменты кода вызывают критическую проблему с кросс-браузерным кодированием, которую всегда следует учитывать. Не используйте непреднамеренно тестируемый API в неподдерживаемых браузерах. Это может показаться очевидным и простым, но иногда это не так. Например, в приведенных выше фрагментах кода использование просмотра назад в нотации коротких регулярных выражений (например, /reg/igm) вызовет ошибку анализатора в неподдерживаемых браузерах. Таким образом, в приведенном выше примере вы должны использовать new RegExp("(? Прогрессивное улучшение

    Этот метод проектирования включает в себя разработку веб-сайта в виде «слоев» с использованием восходящего подхода, начиная с более простого слоя и улучшая возможности сайта на последовательных уровнях, каждый из которых использует больше функций.

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

    Обнаружение мобильных устройств

    Что касается размера экрана, используйте window.innerWidth и window.addEventListener("resize", function()< /*обновить вещи, зависящие от размера экрана*/ >). То, что вы хотите сделать для размера экрана, — это не косая черта информации на меньших экранах. Это будет только раздражать людей, потому что заставит их использовать настольную версию. Вместо этого постарайтесь иметь меньше столбцов информации на более длинной странице на экранах меньшего размера и больше столбцов на более короткой странице на экранах большего размера. Этого эффекта можно легко добиться с помощью гибких блоков CSS, иногда с плавающими элементами в качестве частичного резерва.

    Также постарайтесь переместить менее релевантную/важную информацию вниз и осмысленно сгруппировать содержимое страницы. Хотя это не по теме, возможно, следующий подробный пример может дать вам понимание и идеи, которые убедит вас отказаться от прослушивания пользовательского агента. Давайте представим себе страницу, состоящую из блоков информации; каждая коробка посвящена разным породам кошек или породам собак. На каждой коробке есть изображение, обзор и исторический забавный факт. Изображения сохраняются в максимально разумном размере даже на больших экранах. В целях осмысленной группировки контента все боксы для кошек отделены от всех боксов для собак таким образом, чтобы боксы для кошек и собак не смешивались друг с другом. На большом экране это экономит место, чтобы иметь несколько столбцов, чтобы уменьшить пространство, потраченное впустую слева и справа от изображений. Ящики могут быть разделены на несколько столбцов с помощью двух равноправных методов. С этого момента мы будем предполагать, что все ящики для собак находятся в верхней части исходного кода, что все ящики для кошек — в конце исходного кода и что все эти ящики имеют один и тот же родительский элемент. Конечно, есть единственный экземпляр будки для собаки прямо над будкой для кошки. В первом методе используются горизонтальные Flexbox'ы для группировки содержимого таким образом, что при отображении страницы конечному пользователю все ящики с собаками находятся вверху страницы, а все ящики с кошками - внизу страницы. Второй метод использует макет столбца и возмущается всеми собаками слева и всеми кошками справа. Только в этом конкретном сценарии уместно не предоставлять запасной вариант для флексбоксов/многостолбцов, в результате чего в старых браузерах будет один столбец с очень широкими боксами. Также учтите следующее. Если больше людей посещают веб-страницу, чтобы увидеть кошек, то может быть хорошей идеей поместить всех кошек выше в исходном коде, чем собак, чтобы больше людей могли быстрее найти то, что они ищут, на небольших экранах, где контент сворачивается. до одного столбца.

    [1] Safari предоставляет два номера версии: один технический в токене Safari/xyz и один удобный для пользователя в токене Version/xyz.

    Конечно, нет абсолютно никакой гарантии, что другой браузер не перехватит некоторые из этих вещей (например, Chrome перехватил строку Safari в прошлом). Вот почему определение браузера с помощью строки пользовательского агента ненадежно и должно выполняться только с проверкой номера версии (угон прошлых версий менее вероятен).

    Версия браузера

    Версия браузера часто, но не всегда, помещается в часть значения токена BrowserName/VersionNumber в строке агента пользователя. Это, конечно, не относится к Internet Explorer (который ставит номер версии сразу после токена MSIE) и к Opera после версии 10, которая добавила токен Version/VersionNumber.

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

    Механизм рендеринга

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

    Существует пять основных механизмов визуализации: Trident, Gecko, Presto, Blink и WebKit. Поскольку прослушивание имен механизмов рендеринга является обычным явлением, многие пользовательские агенты добавили другие имена рендеринга для запуска обнаружения. Поэтому важно обращать внимание на то, чтобы не вызывать ложных срабатываний при обнаружении механизма рендеринга.

    < td>Internet Explorer поместил этот токен в часть comment строки пользовательского агента
    Движок Должен содержать Комментарий
    Gecko< /td> Gecko/xyz
    WebKit AppleWebKit/xyz Обратите внимание, браузеры WebKit добавляют Gecko", которая может вызвать ложное срабатывание Gecko, если обнаружение не будет тщательным.
    Presto Opera/xyz Примечание : Presto больше не используется в сборках браузера Opera >= версии 15 (см. «Blink»)
    Trident Trident/xyz
    EdgeHTML Edge/xyz Не-Chromium Edge ставит свою версию ядра после токена Edge/, а не версию приложения. Примечание. EdgeHTML больше не используется в сборках браузера Edge >= версии 79 (см. «Blink»).
    Blink Chrome/xyz

    Версия движка рендеринга

    Большинство механизмов визуализации помещают номер версии в токен RenderingEngine/VersionNumber, за исключением Gecko. Gecko помещает номер версии Gecko в часть комментария пользовательского агента после строки rv:. Начиная с Gecko 14 для мобильной версии и Gecko 17 для настольной версии это значение также помещается в токен Gecko/версия (предыдущая версия указывала дату сборки, а затем фиксированную дату, называемую GeckoTrail).

    Операционная система указана в большинстве строк агента пользователя (но не в веб-платформах, таких как Firefox OS), но формат сильно различается. Это фиксированная строка между двумя точками с запятой в части комментария пользовательского агента. Эти строки специфичны для каждого браузера. Они указывают ОС, но часто также ее версию и информацию об используемом оборудовании (32- или 64-разрядная версия или Intel/PPC для Mac).

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

    Мобильный телефон, планшет или настольный компьютер

    Самая распространенная причина, по которой пользовательский агент выполняет сниффинг, – определение типа устройства, на котором работает браузер. Цель состоит в том, чтобы показывать разные HTML-коды на разных типах устройств.

    • Никогда не предполагайте, что браузер или механизм рендеринга работает только на одном типе устройств. Особенно не устанавливайте разные значения по умолчанию для разных браузеров или механизмов рендеринга.
    • Никогда не используйте токен ОС, чтобы определить, какой браузер используется: мобильный, планшетный или настольный. ОС может работать на нескольких типах устройств (например, Android работает как на планшетах, так и на телефонах).

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

    Браузер Правило Пример
    Mozilla (Gecko , Firefox) Мобильный телефон или планшет внутри комментария. Mozilla/5.0 (Android; Mobile; rv:13.0) Gecko/13.0 Firefox/13.0
    На основе WebKit (Android, Safari) Токен Mobile Safari вне комментария. Mozilla/5.0 (Linux; U; Android 4.0.3; de- ch; HTC Sensation Build/IML74K) AppleWebKit/534.30 (KHTML, как Gecko) Version/4.0 Mobile Safari/534.30
    На основе Blink (Chromium, Google Chrome, Opera 15+ , Edge на Android) Токен Mobile Safari вне комментария. Mozilla/5.0 (Linux; Android 4.4.2); Nexus 5 Build/KOT49H) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/33.0.1750.117 Mobile Safari/537.36 OPR/20.0.1396.72047
    Presto-based (Opera 12- ) Токен Opera Mobi/xyz внутри комментария. Opera/9.80 (Android 2.3.3; Linux; Opera Mobi/ADR-1111101157; U; es-ES) Presto/ 2.9.201 Version/11.50
    Internet Explorer токен IEMobile/xyz в комментарии. Mozilla/5.0 (совместимый; MSIE 9.0; ОС Windows Phone 7.5; Trident/5.0; IEMobile/9.0)
    Edge на Windows 10 Mobile Mobile/xyz и Edge/токены снаружи комментарий. Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; Xbox; Xbox One) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/58.0.3029.110 Mobile Safari/537.36 Edge/16.16299< /td>

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

    Примечание. Если устройство достаточно большое и не помечено как Mobi , вам следует обслуживать свой настольный сайт (который, как рекомендуется, в любом случае должен поддерживать сенсорный ввод, поскольку все больше настольных компьютеров появляются с сенсорными экранами).

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

    Я просматривал этот сайт, но, к сожалению, скрипт настолько загадочен, что я понятия не имею, как использовать его для моей цели, то есть для создания функции, возвращающей true/false.


    @Thrustmaster: Это действительно не так. Обслуживание разных JS для разных браузеров означает, что вы должны добавить Vary: User-Agent в свой ответ, иначе кеширующие прокси сохранят одну версию и отправят ее в другой тип браузера. Но Vary: User-Agent делает ответ некэшируемым в IE.

    @ave: Что вы пытаетесь сделать, обнаруживая «мобильный» браузер? Это различие весьма спорно в современном мире планшетов и гибридных вычислительных устройств. Вы хотите обнаружить маленькие экраны и представить в этом случае другой пользовательский интерфейс? Вы хотите обнаружить соединение с низкой пропускной способностью? Вы хотите обнаруживать сенсорные интерфейсы?

    40 ответов 40

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

    Для тех, кто хочет включить планшеты в этот тест (хотя, возможно, вы не должны), вы можете использовать следующую функцию:

    Исходный ответ

    Вы можете сделать это, просто просмотрев список устройств и проверив, соответствует ли пользовательский агент чему-либо подобному:

    Однако, поскольку вы считаете этот метод ненадежным, вы можете предположить, что любое устройство с разрешением 800 x 600 или меньше также является мобильным устройством, что еще больше сузит вашу цель (хотя в наши дни многие мобильные устройства имеют гораздо большее разрешение, чем это)

    Ссылка:

    Здравствуйте, я только что перешел по ссылке detectmobilebrowsers.com на своем iPad 3, iOS 6.1.2, и там написано "Мобильный браузер не обнаружен".

    Со страницы сведений: планшеты Android, iPad, Kindle Fires и PlayBook не обнаруживаются по умолчанию. Чтобы добавить поддержку планшетов, добавьте |android|ipad|playbook|silk в первое регулярное выражение.

    Google TV – это тоже Android. Что определяет мобильный телефон? Размер экрана ? Трогать ? ориентация устройства ? Когда я занимаюсь дизайном, это больше вопрос наведения мыши или нет, большой бутон или маленькие ссылки. Итак, пока я запускаю "if (Modernizr.touch)" :)

    <р>. поскольку смартфоны обычно поддерживают это свойство, а настольные браузеры — нет. См. в MDN.

    EDIT 1: Как указал @Gajus, window.orientation теперь устарела и не должна использоваться.

    EDIT 2: Вы можете использовать экспериментальный screen.orientation вместо устаревшего window.orientation . См. в MDN.

    РЕДАКТИРОВАТЬ 3: изменение с window.orientation на screen.orientation


    Это, вероятно, не будет работать долго. 1) Планшеты могут иметь приличные размеры экрана, вы хотите, чтобы они отображали полноэкранный веб-сайт, но у них будет это свойство 2) Windows 8 уже здесь, а вместе с ней и множество ноутбуков с сенсорным экраном и вращающимися экранами.

    Что касается вашего первого замечания о планшетах с приличными размерами экрана, я думаю, вы могли бы привести те же аргументы и для всех других решений (планшет с большим экраном, который отслеживается как маленький экран). в любом случае идея здесь состоит в том, чтобы искать свойство, которое совместно используется небольшими устройствами, вместо того, чтобы хранить длинный код обслуживания и добавлять регулярное выражение с каждым новым устройством/версией/моделью. Я думаю, что обнаружение устройств осталось в прошлом, и сегодня нам нужно сосредоточиться на обнаружении функций. снова я буду рад здесь о более подходящей недвижимости в этом отношении.

    Чтобы проверить, находится ли пользователь на определенном мобильном устройстве:

    Этот вариант получает мой голос за контент, но я пытаюсь понять, как преобразовать его в стиль Джона Папы, и у меня возникают некоторые трудности. Все еще довольно новичок в AngularJS в целом (примерно месяц знакомства с ним) и vm. обозначение немного наклоняет кривую обучения вверх. Любая помощь? -C§ РЕДАКТИРОВАТЬ: я пытаюсь провести модульное тестирование с помощью karma-jasmine, поэтому я спрашиваю.

    @AkarshSatija Влияет ли падение производительности из-за этих 5 проверок регулярных выражений на какое-либо из ваших приложений? Я был бы очень удивлен, если бы это было так. Преждевременная оптимизация может быть пустой тратой времени.

    Вот простое решение из рогатки facebook

    Полезно в случае обнаружения устройства, на котором может быть установлено мобильное приложение. Вы не заботитесь о браузере, как таковом. Только устройство/ОС.

    Пришел сюда в поисках простого и понятного способа обнаружения "устройств с сенсорным экраном", которые я отношу к мобильным устройствам и планшетам. Не нашел правильного выбора в текущих ответах, но сделал следующее, что также может кому-то помочь.

    Редактировать: для одновременной поддержки настольных компьютеров с сенсорным экраном и мобильных устройств вы можете использовать следующее:


    @HappyCoder Я считаю, что ОС должна сообщать браузеру, когда сенсорный экран на рабочем столе активен. Итак, да, эта проверка все еще должна быть действительной.

    (+1), однако мой рабочий стол, который я сейчас использую, имеет сенсорный экран, и он не всегда подходит для touchstart|end|etc .

    Средство выбора даты Bootstrap использует следующее: if ( window.navigator.msMaxTouchPoints || 'ontouchstart' в документе) < this.input.blur(); >

    @J.T.Taylor Похоже, Microsoft рекомендует navigator.maxTouchPoints (без префикса ms). Также есть статья MDN, которую стоит проверить.

    Согласно статье MDN об обнаружении браузера с помощью пользовательского агента, рекомендуется избегать этого подхода, если это возможно, и предлагать другие способы, такие как обнаружение функций.

    Однако, если нужно использовать пользовательский агент как средство определения того, является ли устройство мобильным, они предлагают:

    Подводя итог, мы рекомендуем искать строку «Mobi» в любом месте пользовательского агента, чтобы обнаружить мобильное устройство.

    Таким образом, этой строчки будет достаточно:

    const isMobileDevice = window.navigator.userAgent.toLowerCase().includes("mobi");

    [ОБНОВЛЕНИЕ]:

    Как предполагает @zenw0lf в комментариях, лучше использовать регулярное выражение:


    @AlexSorokoletov Также для статьи MDN Если устройство достаточно большое и не помечено как «Mobi», вам следует обслуживать свой настольный сайт (который, как рекомендуется, в любом случае должен поддерживать сенсорный ввод, так как все больше настольных компьютеров появляется с сенсорными экранами).

    Как уже отмечалось, полагаться на движущуюся цель данных пользовательского агента проблематично. То же самое можно сказать и о подсчете размера экрана.

    Мой подход заимствован из техники CSS, чтобы определить, является ли интерфейс сенсорным:

    Используя только JavaScript (поддерживается всеми современными браузерами), сопоставление медиазапроса может легко определить, является ли устройство мобильным.

    Я бы проверил, соответствует ли !matchMedia("(any-pointer:fine)"). ("Мышь не подключена", а не "есть сенсорный экран".

    Это работает, в то время как мой последний скрипт мог быть обманут людьми, использующими функцию масштабирования в браузере (например, парень, с которым я разговаривал на 13-дюймовом экране с 4K, который снизился до 1080p, но все равно должен был использовать масштабирование). Работал на моем iPhone. (Safari/Firefox) и устройства Android (Waterfox/Chrome/"Браузер"). Определенно намного надежнее, чем все ответы, получившие наибольшее количество голосов.

    Дополнительно можно протестировать свойство наведения: для смартфонов и сенсорных экранов @media (наведение: нет) и (указатель: грубо)

    Вот решение userAgent, более эффективное, чем match.

    Не существует идеального решения для определения того, выполняется ли код JS в мобильном браузере, но следующие два варианта должны работать в большинстве случаев.

    Вариант 1: анализ браузера

    Этот конкретный код перехвата браузера относится к библиотеке под названием isMobile.

    Вариант 2: window.ориентация

    Проверить, определено ли окно.ориентация:

    Не все устройства с сенсорным экраном являются мобильными, и наоборот. Итак, если вы хотите реализовать что-то специально для сенсорного экрана, вам следует проверять не то, работает ли ваш браузер на мобильном устройстве, а то, поддерживает ли устройство сенсорный экран:


    В Windows 8 и более поздних версиях основное внимание уделяется добавлению поддержки мобильных телефонов, а также гибридных устройств (ноутбуков, которые можно преобразовать в большие планшеты), поэтому ориентация не работает как метод обнаружения, даже если moz не считает ее устаревшей.

    Это из Win 7 с установленным графическим программным обеспечением, может изменить ориентацию, но задайте себе вопрос, кто может на рабочем столе / ноутбуке использовать другую ориентацию экрана, например, портретную вместо альбомной, и использовать i даже более 1 минуты. Никто . Изменение ориентации на рабочем столе означает, что вы начнете читать символы на экране снизу вверх.

    Обнаружение функций намного лучше, чем попытки выяснить, на каком устройстве вы находитесь, и очень сложно следить за постоянно появляющимися новыми устройствами, библиотека, такая как Modernizr, позволяет узнать, доступна ли конкретная функция или нет.< /p>


    Вы ответили на вопрос, отличный от заданного. Вместо «как я могу обнаружить мобильный?», вы ответили «как я могу обнаружить определенные функции?». Не все обнаружение устройств предназначено для обнаружения функций. Что, если бы мы хотели получить статистику об устройствах? Тогда нет, «обнаружение функций» не «намного лучше, чем [определение устройства]».

    Это не ответ, но он заслуживает большего, чем просто комментарий.Вопрос в следующем: почему вы хотите обнаружить браузер, а затем вы, вероятно, захотите узнать его только из-за (отсутствия) прикосновения. Адаптивный веб-дизайн подходит в большинстве, если не во всех случаях.

    Что делать, если функция, которую я хочу обнаружить, зависит от мощности процессора устройства? Мне нужно понизить качество на мобильных телефонах.

    Чтобы добавить дополнительный уровень контроля, я использую хранилище HTML5, чтобы определить, использует ли оно мобильное хранилище или хранилище для настольных компьютеров. Если браузер не поддерживает хранилище, у меня есть массив имен мобильных браузеров, и я сравниваю пользовательский агент с браузерами в массиве.

    Это довольно просто. Вот функция:

    Я еще не тестировал на мобильных устройствах, но sessionStorage.desktop не существует ни в Safari, ни в Chrome, ни в Firefox (все последние версии на момент публикации). Тем не менее, вы получаете голосование, поскольку ваше решение идет в лучшем направлении, чем другие. Но не забудьте использовать var mobile = вместо mobile = .

    Как насчет чего-то подобного?


    Хорошее замечание, Джон, я не могу точно вспомнить, о чем я думал в то время, кажется маловероятным (смотря на это сейчас), что второе предложение вернет true, если первое ложно. Хотя должна была быть какая-то причина, по которой я его добавил.

    Большинству приличных программистов становится стыдно, когда они видят код, который они сами написали годом ранее. Те, кто не просто не вырос как программист ;-)

    Разрешение окна никак не связано с тем, установлен браузер на мобильном устройстве или нет. Например, многие настольные браузеры работают в неполноэкранных окнах. Если вы представите в этих браузерах пользовательский интерфейс, предназначенный для экранов портативных устройств, их пользователи будут разочарованы.

    Действительно хороший способ обнаружения мобильных и планшетных устройств – проверить, может ли браузер создать событие касания.

    Простой код JavaScript:

    Это сработало для меня очень хорошо, но могут возникнуть проблемы с ноутбуками, оснащенными сенсорным дисплеем.

    Я не уверен, будет ли ноутбук с сенсорным экраном распознаваться как мобильное устройство, потому что я еще не проверял его.

    Ноутбуки с сенсорным экраном будут определяться как мобильные устройства. А также сенсорные мониторы для настольных компьютеров. Хотите верьте, хотите нет, но вы также столкнетесь с проблемой, если используете устройство с сенсорным экраном для подключения RDP к другому устройству, у которого нет сенсорного экрана.

    @Sivic, он срабатывает только тогда, когда TouchEvent не существует, а приведенный выше код перехватывает его и возвращает false. Это не относится к мобильным устройствам, планшетам или другим устройствам с сенсорным экраном.

    Как только элемент получает фокус, вы сразу же размываете его. Bootstrap-datepicker, очень популярный и хорошо поддерживаемый компонент с почти 10 000 звезд на GitHub, использует этот подход:

    Спасибо Tigger за помощь.


    не используйте этот метод, так как window.orientation устарела.

    window.ориентация устарела. Эта функция больше не рекомендуется. Хотя некоторые браузеры могут по-прежнему поддерживать его, возможно, он уже удален из соответствующих веб-стандартов, может находиться в процессе исключения или может быть сохранен только в целях совместимости. Избегайте его использования и обновляйте существующий код, если это возможно; см. таблицу совместимости внизу этой страницы, чтобы принять решение. Имейте в виду, что эта функция может перестать работать в любое время.

    Вот мое переосмысленное решение проблемы. Все еще не идеально. Единственным верным решением было бы серьезное отношение производителей устройств к строкам пользовательского агента «Мобильный» и «Планшет».

    Что произойдет, если на планшете Nexus 7 будет указана только строка Android UA? Сначала Mobile станет истинным, затем Tablet также станет истинным, но Tablet удалит строку Mobile UA из тега body.

    добавлены строки предупреждений для разработки. Консоль Chrome может эмулировать множество портативных устройств. Проверьте там.

    ИЗМЕНИТЬ:

    Просто не используйте это, вместо этого используйте функцию обнаружения. Существует так много устройств и брендов, что таргетинг на бренд НИКОГДА не будет правильным решением.

    "Просто не используйте это" ? Вы всегда можете удалить свой ответ. Кроме того, все эти .match( .hm. RegExp и .test() — более простой вариант.

    Зависит от варианта использования. Для всех мобильных устройств требуется батарея. Если вам нужна вычислительная мощность без разряда батареи, используйте API состояния батареи:

    Если вы ищете презентацию, используйте matchMedia , которая возвращает логическое значение:

    Или объедините их для еще большего удобства пользователей на планшетных устройствах.


    Battery Status API удален из Firefox, но с июля 2016 года остается кандидатом в рекомендации W3C, продолжает работать в популярных браузерах и полезен при формировании опыта.

    В двух словах, если вы импортируете крошечный файл JS:

    у вас останется объект JSON, который выглядит следующим образом:

    (при условии, что вы используете Nexus 7, конечно), и вы сможете делать такие вещи, как:

    Это то, что вы ищете.

    Отказ от ответственности. Я работаю в компании, предлагающей эту бесплатную услугу. Спасибо.


    Можете ли вы уточнить, какой браузер вы используете (идеально будет указать точную строку UA), какие данные вы получаете и чего ожидаете?

    Я тоже пробовал wurfl, у меня iPhone 5C под управлением IOS 11.2. Сафари не распознается как мобильный браузер. Я ожидаю использовать «is_mobile»: true, а затем «form_factor»: смартфон, и он тоже не возвращается.

    Мне пришлось обратиться к гуру Mobile Data в компании, и они сказали мне, что OS 11.2 не работает на 5C. Самое низкое устройство — 5S. Значит, что-то не так в том, что вы написали. Не стесняйтесь обращаться в ScientiaMobile в автономном режиме, чтобы проверить, где может быть отключение. Спасибо

    Это всего лишь порт es6 принятого ответа, который я использую в своем проекте. Обратите внимание, что сюда входят и планшеты.

    Решение IE10+, использующее только matchMedia:

    isMobile() возвращает логическое значение

    Здесь уже был дан ответ. Как вы думаете, почему ваш ответ добавляет какой-либо дополнительный контекст по сравнению с существующим ответом 2018 года? Уже совершенно ясно, что window.matchMedia('mediaString').matches возвращает логическое значение.

    @RokoC.Buljan ну, то, что может показаться очевидным для вас, может быть, не для всех. Поэтому я решил сделать свой собственный ответ.

    Лучшее должно быть:

    Но как говорит Йоав Барнеа.

    После этих 3 тестов я надеюсь, что var isMobile верна. хорошо

    Вот он полный функционал

    @raacer на самом деле в ответе есть два регулярных выражения (оба в одной строке) - первое проверяет всю строку UA и ищет android, mobile и т. д., а второе проверяет только первые 4 символа. UA.

    как насчет использования "window.screen.width"?

    Думаю, это лучший способ, потому что каждый день появляется новое мобильное устройство!

    (хотя я думаю, что это не поддерживается в старых браузерах, но попробуйте :) )


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

    Вот решение ECMAScript 6 (готовое к TypeScript)

    Обратите внимание, что разрешение большинства мобильных устройств нового поколения превышает 600 x 400. т. е. iPhone 6.

    Подтверждение теста: запустили самые популярные и самые последние сообщения здесь с дополнительной проверкой после запуска следующим образом:

    Каким-то образом в следующих браузерных приложениях были возвращены следующие результаты. Характеристики: iPhone 6S, iOS 10.3.1.

    Safari (последняя версия): обнаружено как мобильное устройство.

    Chrome (последняя версия): не определил его как мобильный.

    О, и я также добавил переменную 'debugMode', чтобы легко переключаться между отладкой и обычной компиляцией.

    Отказ от ответственности: полная заслуга Ланти, а также то, что это не тестировалось на планшетах Windows. который может вернуть рабочий стол/ноутбук, поскольку ОС - это чистая Windows. Проверю, как только найду друга, который им пользуется.

    Читайте также: