Страница 1 из 1

Проблема с тулбаром из-за определения touch'a

Добавлено: 22 янв 2016, 20:19
Allesad
Здравствуйте. В нашем проекте Ваш продукт используется для генерации веб-версии отчетов с последующим отображением их как в браузере, так и в других версиях приложения на разных девайсах (WPF-клиент на Windows-терминале, Android, iOS-клиенты на соответствующих устройствах). Проблема возникла в WPF-клиенте, который через контрол-браузер выводит сформированный отчет на экран. Отчет выводится как положено, однако кнопки тулбара (Print, Save, Zoom etc.) не активны, не реагируют на курсор мышки, а также на клик по ним.
Пытаясь разобраться в причинах проблемы, я установил соединение веб-контрола в WPF-клиенте с remote-инспектором в Chrom'e. Покопавшись в коде (очень симпатичный VanillaJS :) ), я выяснил что проблема заключается во флаге isTouchDevice в опциях объекта StiMvcViewer. При старте, объект определяет значение флага isTouchDevice с помощью проверки:

Код: Выделить всё

return 'ontouchstart' in document.documentElement
Любопытно, но эта проверка возвращала true, хотя такого события как ontouchstart я в инспекторе document.documentElement'a не увидел. И ладно бы если бы репорт просто реагировал на тач-события вместе с mouse-событиями, но флаг isTouchDevice используется для полной блокировки mouse-событий. То есть везде стоит проверка типа:

Код: Выделить всё

if (this.jsObject.options.isTouchDevice...) return;
В итоге элементы ни цвет не меняют при наведении на них мышкой, ни меню не показывают, ни клики не отрабатывают. Ради любопытства я пробовал подменять значение флага isTouchDevice в консоли после его определения - элементы стали подсвечиваться курсором, меню также стало вылезать, однако клики по элементам меню все равно ни к чему не приводили. Возможно, из-за каких-то еще проверок обработчики клик-ивентов просто не устанавливаются на элементы меню.
Интересно также и то, что подобная проблема у меня возникла в Chrome на одном из компьютеров. То есть тулбар ни на что не реагировал и все такое. Помогло полное отключение тач-поддержки с помощью флагов в Chrome - chrome://flags/#touch-events.

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

PS: для вывода отчета на WPF-клиенте мы используем продукт Awesomium, который основывается на движке Chromium.

Re: Проблема с тулбаром из-за определения touch'a

Добавлено: 25 янв 2016, 13:27
HighAley
Здравствуйте.

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

Код: Выделить всё

InterfaceType = Mouse 
Спасибо.

Re: Проблема с тулбаром из-за определения touch'a

Добавлено: 25 янв 2016, 13:28
HighAley
Здравствуйте.

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

Код: Выделить всё

InterfaceType = Mouse 
Спасибо.