Проблема:
У меня есть небольшая группа из примерно 90 пользователей, что чрезвычайно важно, поэтому, когда один или два из этих бизнес-клиентов хотят изменить пользовательский интерфейс в своем веб-приложении, они обычно получают выделенные ресурсы для разработки. Тем не менее, нам важно понять, как приложение используется группой в целом, потому что эта группа имеет свои личные взгляды на то, как их интерфейс должен выглядеть, и все они используют приложение по-разному. У меня больше всего проблем с идентификацией их использования аппаратных и мягких клавиатур. Оптимально я ищу ответ так же просто, как "используйте новый Window.TabletMode == true
!" Я не думаю, что существует простой ответ.
Исследования:
- Вопрос SO Обнаружение виртуальной клавиатуры и аппаратной клавиатуры - это единственный аналогичный вопрос, который я вижу, но он сосредоточивает половину своего времени на использовании клавиатуры JavaScript для замены мягкой клавиатура, поэтому ответы говорят о том, как настроить клавиатуру на номера, даты и т.д. Кроме того, он ищет кросс-браузерные решения, где мне нужна поддержка только IE11+. Наконец, я могу зависеть от стыковки аппаратной клавиатуры и конкретной марки (Dell). Наконец, я могу зависеть от Windows/IE11, поэтому могут быть другие возможности подхода по сравнению с этим 3-летним вопросом. Мое использование гибридного планшета также делает подходы к проверке работоспособности бесполезными, поскольку я уже знаю все возможности (touch и т.д.) Уже имеющиеся на устройстве.
- Я мог проверить Registry для настройки пользовательского интерфейса, но мне действительно нужно придерживаться JavaScript или чего-то подобного.
- Android имеет недокументированные, но известные events, которые указывают на отображение и скрытие клавиатуры. Однако ни один из пользователей не будет использовать Android.
- IE должен получить сообщение WM_SETTINGCHANGE, когда произойдет изменение, но я не могу определить, было ли это доступно для JavaScript API, Я думаю, что это будет более конкретное сообщение (если оно есть), поэтому я не могу найти что-либо с этим поисковым термином и JavaScript.
код:
Свойство window.orientation возвращает 0 для портрета и 90 или -90 для пейзажного вида.
В сочетании с window.innerHeight
я мог бы использовать что-то вроде...
var portrait;
$(window).on("orientationchange",function(event){
if (event.orientation == 0)
{
portrait = true;
}
else //if not, it landscape
{
portrait = false;
}
});
Затем я использовал бы window.innerHeight
в сочетании со значением portrait
, чтобы определить, выглядит ли соотношение ширины к высоте, у меня открыта клавиатура. Этот подход действительно может работать в полноэкранном режиме, учитывая мои довольно узкие ограничения, но что делать, если браузер не является полноэкранным? Я уверен, что есть много других причин, чтобы не писать расчеты хакерского отношения для этого. Кроме того, мое самое большое желание, конечно, было бы сделать это с любым браузером и любым размером экрана.
Эти вещи я могу обработать: мне нужно будет установить переменные при загрузке документа и выработать способ определить, когда типизация станет актуальной. Мне может потребоваться проверить некоторые возможности браузера. Возможно, я бы увеличил счетчики для ввода и без аппаратной клавиатуры. Как только я нажму определенное число (скажем, 5 нажатий клавиш), я отправил бы запрос POST на конечную точку отслеживания данных, чтобы сообщить, что сеанс 12345 использует мягкую клавиатуру (или жесткую клавиатуру). Впоследствии я отменил подписку на обработчик событий. Однако я работаю над этой частью, но я не хочу, чтобы кто-то тратил время на украшение или разработку огромного примера.
Окружающая среда:
- Оборудование должно быть гибридом Dell/ноутбука (конкретная модель TBD) с IE11 +. Я ненавижу делать что-то конкретное IE, но если он работает на IE11 +, он вполне приемлем.
- Я мог бы использовать любые предложенные JavaScript-библиотеки, но имейте в виду, что JQuery 2.2 и нокаут 2.1 уже присутствуют, поэтому мало "веса" добавляется для решения с использованием JQuery.
- Я, вероятно, не могу получить разрешение на запись приложения, использующего ActiveX или какой-либо другой подход с жестким интерфейсом, который потребует установки локального приложения, поскольку моя компания имеет примерно 50 000 пользователей и развертывание например, для 90 пользователей было бы слишком сложно поддерживать.
- Размер экрана должен составлять 11 дюймов, но мне было бы грустно прибегать к использованию определенного размера и разрешения, потому что такой ответ был бы крайне ограничен в приложении для меня или будущих читателей.
Удар для читателей:
Я вижу переход от Ipads в пространстве медицинского киоска /EMR, потому что Ipads ограничивают множество вариантов пользовательского интерфейса в пользу сплоченного опыта. Врачи особенно часто привлекают внимание высокопоставленных ИТ-лидеров, если они хотят очень специфического изменения пользовательского интерфейса. Microsoft, как правило, допускает множество нестандартных вмешательств и (в последнее время) более стандартных типов вмешательства в работу браузера. Я думаю, что многие из этих движений идут по таблицам Windows по этой причине, а также по той причине, что многие медицинские группы сильно влияют на возможности разработки .NET.