2011-12-22 3 views
2

Я использую MobileViewEngines describe here от Scott Hanselman и базу данных браузера 51Degrees.mobi для визуализации различных представлений для мобильных и настольных браузеров.Как обнаружить мобильное устройство с сенсорным экраном с использованием 51degrees.mobi

Теперь я хочу добавить среднюю площадку. Для мобильных браузеров High-End (яблоко, андроид, телефон для Windows, некоторые Blackberry и т. Д.). Я думаю использовать сенсорный экран для дифференциации этой категории.

Итак, два вопроса:

  1. Как обнаружить сенсорный экран с помощью 51Degrees.mobi?
  2. Является ли сенсорный ввод хорошим способом для этого? (Мне нужны категории рабочего стола, высокого класса, низкого класса)

ответ

2

Я работаю на 51Degrees.mobi. Вы можете определить, является ли устройство сенсорным экраном, используя Request.Browser["IsTouchScreen"]

Однако использование этого элегантно внутри MVC немного более активно. Глядя на источник MobileCapableViewEngine кажется, что вы можете сделать новый двигатель, скопировав мобильный двигатель и изменение метода FindView:

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, 
               string masterName, bool useCache) 
    { 
     string overrideViewName = controllerContext.HttpContext.Request.Browser["IsTouchScreen"] == "True" 
             ? viewName + ".Touch" 
             : viewName; 
     ViewEngineResult result = NewFindView(controllerContext, overrideViewName, masterName, useCache); 

     // If we're looking for a Touch view and couldn't find it try again without modifying the viewname 
     if (overrideViewName.Contains(".Touch") && (result == null || result.View == null)) 
     { 
      result = NewFindView(controllerContext, viewName, masterName, useCache); 
     } 
     return result; 
    } 

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

Прежде чем делать это, вы должны подумать, если вы хотите разделить устройства. Например, Nokia X3-02 имеет сравнительно небольшой экран, но будет представлен с тем же видом, что и iPad. Возможно, вам стоит подумать об использовании ОС устройства, то есть Request.Browser["PlatformName"]

И наконец, версия 2DDreerees.mobi Foundation 2 представляет наши собственные данные устройства, в которых используются разные имена функций из предыдущего. Вы можете прочитать mroe об этом на 51Degrees.mobi

+0

не работает на любом устройстве Android, не работает на ноутбуке Windows 7 с сенсорным экраном :( –

+0

Свойство больше не является Request.Browser ["IsTouchScreen"], а теперь ["HasTouchScreen"] и не предоставляется в их бесплатной версии Lite. –

1

Большинство обнаружений касания выполняется с помощью Javascript. Или, альтернативно, CSS.

Modernizr - хорошая библиотека для использования, и я думаю, что она поставляется с MVC3 по умолчанию.

Вы бы так что-то вроде этого:

html.touch div { 
    width: 480px; 
} 

html.no-touch div { 
    width: auto; 
} 

Примеры обнаружения см this

Может быть, вы можете посмотреть в MVC4 тоже? Одним из их главных моментов является мобильная поддержка. Read here. Возможно, что-то добавлено для хорошего обнаружения касания по умолчанию

+0

Здесь много возможностей javascript http://stackoverflow.com/questions/3974827/detecting-touch-screen-devices-with-javascript –