Я хочу, чтобы на одном сайте использовался один и тот же HTML-код, но "виджетизировал" его наилучшим образом для платформы, на которой он служил.
Существует ли стандартная практика обнаружения функций мобильных устройств/аппаратных клавиатур на клиенте и принятия решения о загрузке jQuery Mobile вместе с мобильным JavaScript-интерфейсом сайта или jQuery-интерфейсом сайта и script для работы на рабочем столе?
Следующее выглядит как разумный способ сделать это, но мне интересно, является ли Modernizr.touch лучшим способом обнаружить это? Например: Принудительное касание не может быть лучшим решением для поверхности. Есть ли способ обнаружить, есть ли также аппаратная клавиатура?
Modernizr.load({
test: Modernizr.touch,
yep : ['jquery-mobile.js','mobile.js']
nope: ['jquery-ui.js','desktop.js']
});
Edit:
Найденные соответствующие ошибки Modernizr:
- Modernizr.touch обнаруживает события касания, которые не касаются устройств
- IE10 "metro" не обнаружен как устройство с сенсорным экраном
Я предполагаю, что мне действительно нужно определить, как устройство способно касаться, и если у него есть аппаратная клавиатура. Я мог бы использовать ответ Дэвида Малдера для определения ширины устройства в физических единицах (дюймах) в качестве прокси-сервера для этого и предположить, что на что-нибудь > 11 дюймов есть клавиатура, но я уверен, что есть (или Google выпустит планшет Nexus 12), где это сделало бы неправильное предположение.