Обнаружение браузера - Мобильный против ПК

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

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

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

Итак, если я определяю особенности, что именно я обнаруживаю? Нет способа определить, поддерживает ли устройство двойной щелчок, не так ли?

2 ответа

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

Распространенное предложение:

if (document && document.element && 'ontouchstart' in document.documentElement) {
  ...
}

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

  /* Feature tests for TouchEvent and GestureEvent modules
   * implemented in Mobile Safari on iPhone
   *
   * The TouchEvent module is a draft (18/08/2008) that supports:
   *
   *   touchstart
   *   touchmove
   *   touchend
   *   touchcancel
   *
   * The GestureEvent module is a draft (18/08/2008)
   * that supports:
   *
   *   gesturestart
   *   gesturechange
   *   gestureend
   *
   * The functions require support for try..catch, introduced
   * in ECMA-262 ed3, JavaScript 1.4 and JScript 5.1.5010.
   * Equates to Navigator 4.0 or later and IE 5.1 or later
   * (http://pointedears.de/scripts/es-matrix/)
   *
   * If W3C DOM 2 Event document.createEvent is supported, 
   * return either true or false,
   * otherwise return undefined.
   */
   function touchSupported() {
     if (document && document.createEvent) {
       try {
         document.createEvent('TouchEvent');
         return true;
       } catch (e) {
         return false;
       }
     }
   }

   function gestureSupported() {
     if (document && document.createEvent) {
       try {
         document.createEvent('GestureEvent');
         return true;
       } catch (e) {
         return false;
       }
     }
   }

Он был написан в 2008 году, я действительно использовал его только в Safari и iPhone, хотя, похоже, он работает в других местах. Тест тщательно.

Вы никогда не сможете определить, где это ПК или мобильное устройство, которое эффективно обращается к вашему веб-сайту, потому что таких устройств очень много, и они постоянно меняются. Единственный способ сделать это - проверить строку агента браузера, что довольно утомительно; Есть тысячи этого. Кроме того, он может быть подделан, поэтому он не является хорошим источником информации. Лучшее, что вы можете сделать (это то, что делают многие профессионалы, в том числе и я), - это использовать методы обнаружения функций - разрешение экрана, поддерживаемые HTML-теги, поддерживаемые свойства CSS и т. Д.

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

Вот ссылка на некоторую документацию http://modernizr.com/docs/

Другие вопросы по тегам