Я працюю на мобільному веб-сайті, який має працювати на різних пристроях. На даний момент у мене болить голова - це BlackBerry.
Нам потрібно підтримувати як натискання клавіатури, так і сенсорні події.
В ідеалі я б просто використовував:
$thing.click(function(){...})
але проблема, з якою ми стикаємося, полягає в тому, що деякі з цих пристроїв ожини мають дуже дратівливу затримку з моменту дотику до неї, що викликає клацання.
Засіб полягає в тому, щоб замість цього використовувати сенсорний запуск:
$thing.bind('touchstart', function(event){...})
Але як я можу прив’язати обидві події, а лише розпалити одну? Мені все ще потрібна подія клацання для клавіатурних пристроїв, але, звичайно, не хочу запускати події клацання, якщо я використовую сенсорний пристрій.
Бонусне запитання: чи все-таки це робити і додатково розміщувати браузери, які навіть не мають сенсорного початку? Досліджуючи це, схоже, що BlackBerry OS5 не підтримує сенсорний запуск, тому також доведеться покладатися на події клацання для цього браузера.
ДОДАТИ:
Можливо, більш вичерпне питання:
Чи можна за допомогою jQuery обробляти як сенсорні, так і взаємодії миші з однаковими прив'язками?
В ідеалі відповідь - так. Якщо ні, у мене є кілька варіантів:
1) Ми використовуємо WURFL для отримання інформації про пристрій, щоб створити власну матрицю пристроїв. Залежно від пристрою, ми будемо використовувати сенсорний АБО клацання.
2) Визначте підтримку дотику в браузері через JS (мені потрібно ще кілька досліджень щодо цього, але здається, що це можливо).
Однак це все ще залишає одне питання: як щодо пристроїв, які підтримують BOTH. Деякі телефони, які ми підтримуємо (а саме Nokias та BlackBerries), мають як сенсорні екрани, так і клавіатури. Тож такий спосіб повертає мене до повного кола до початкового питання ... чи є спосіб якось дозволити обом відразу?
.bind('touchstart mouseup')
вирішить це (на основі одного з коментарів нижче)