1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hbsxcjp-jquery.event.ue

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

jQuery.event.ue

Summary

Используйте этот плагин unified event для приложений, которые легко и без проблем поддерживают мобильные (сенсорные) и настольные (мышь) среды.

Плагин распознаёт движения мыши, клавиатуры и касания, имеющие одинаковое намерение, и публикует для них унифицированные события. Например, намерение длительного нажатия выражается с помощью мыши нажатием и удержанием левой кнопки мыши более полсекунды без существенного перемещения мыши. То же самое намерение на сенсорном устройстве выражается путём размещения пальца на экране более полсекунды без его существенного перемещения. Этот плагин распознаёт оба движения как имеющие одинаковое намерение и публикует одно событие uheld для любого из них.

Вот полный список намерений, поддерживаемых этим плагином unified event:

  • utap — щелчок мышью (мышь)/касание пальцем (сенсорный экран);
  • uheld — длительное нажатие мышью/нажатие и удержание пальцем;
  • udrag — щелчок и перетаскивание мышью/свайп пальцем;
  • uhelddrag — долгое нажатие и перетаскивание мышью/нажатие, удержание и перетаскивание пальцем;
  • zoom — перетаскивание мыши по оси Y с одновременным нажатием клавиши Shift/щипок двумя пальцами.

Этот плагин используется во множестве коммерческих SPA и упоминается в бестселлере «Одностраничные веб-приложения — JavaScript от начала до конца» [1], также [доступном на Amazon][2].

Пожалуйста, посмотрите файл ue-test.html для демонстрации различных намерений. Ожидаемое поведение выражено в BR углу плиток. Если вы видите какое-либо неожиданное поведение при тестировании движений на вашем устройстве, пожалуйста, создайте отчёт об ошибке, чтобы мы могли это исправить!

Поддержка браузеров

Этот плагин работает с jQuery 1.7.0+ и был протестирован на большинстве версий jQuery до 3.0.0. Он работает с последними версиями популярных браузеров: Chrome 15+, Firefox 23+, Safari 5+ и IE 9+. Для IE9 требуются настройки edge:

  <head><meta http-equiv="X-UA-Compatible" content="IE=edge" />
  ....

Примеры

    // bind to a mouse click or tap event
    $( '#utap' ) .on( 'utap',  onTap   );

    // bind to a long-press event
    $( '#uheld' ).on( 'uheld', onHeld  );

    // bind to zoom events
    $( '#uzoom' )
       .bind( 'uzoomstart', onZoomstart )
       .bind( 'uzoommove',  onZoommove  )
       .bind( 'uzoomend',   onZoomend   )
       ;

    // bind to drag events
    $( '#udrag' )
      .bind( 'udragstart', onDragstart )
      .bind( 'udragmove',  onDragmove  )
      .bind( 'udragend',   onDragend   )
      ;

    // bind to hold-drag events
    $('#uhelddrag')
      .bind('uheldstart', onDragstart )
      .bind('uheldmove',  onDragmove  )
      .bind('uheldend',   onDragend   )
      ;

Намерения

Смотрите файл ue-test.html, чтобы увидеть пример использования объекта события.

Намерение клика

Намерение клика приводит к событию utap.

  • Движение на рабочем столенажатие левой кнопкой мыши [LMB] вниз-вверх, где время нажатия мыши меньше допуска касания и перемещение местоположения меньше допуска перетаскивания.
  • Сенсорное движение — touchstart-move-end, где время касания меньше допуска касания и перемещение местоположения меньше допуска перетаскивания.

Вы можете настроить допуски касания, перетаскивания и долгого нажатия в defaultOptMap в верхней части библиотеки. В будущем в API появится метод для изменения этих значений.

Намерение долгого нажатия

Намерение долгого нажатия приводит к событию uheld.

  • Движение на рабочем столенажатие левой кнопкой мыши [LMB] вниз-вверх, где время нажатия мыши превышает допуск долгого нажатия и перемещение местоположения меньше допуска перетаскивания.
  • Сенсорное движение — touchstart-move-end, где время касания превышает допуск долгого нажатия и перемещение местоположения меньше допуска перетаскивания.

Намерение перетаскивания

Намерение перетаскивания приводит к одному событию udragstart, одному или нескольким событиям udragmove и окончательному событию udragend.

  • Движение на рабочем столеLMB вниз — перемещение мыши — LMB вверх, где время нажатия левой кнопки мыши превышает допуск касания и перемещение местоположения больше допуска перетаскивания.
  • Сенсорноеtouchstart-move-end, где время касания превышает допуск перетаскивания. Толерантность

Порядок событий следующий:

  • udragstart — срабатывает в начале перетаскивания;
  • udragmove — срабатывает при каждом перемещении указателя;
  • udragend — срабатывает по окончании перетаскивания.

Намерение удерживаемого перетаскивания

Намерение удерживаемого перетаскивания приводит к одному событию uheldstart, одному или нескольким событиям uheldmove и последнему событию uheldend.

  • Движение на рабочем столе представляет собой комбинацию LMB down + удержание — перемещение мыши — LMB up, где время нажатия кнопки мыши превышает толерантность удерживания, а мышь остаётся в пределах толерантности перетаскивания, после чего происходит перемещение, превышающее толерантность перетаскивания.
  • Сенсорное взаимодействие представляет собой последовательность touchstart + удержание — движение — end, где время касания превышает толерантность удержания, а сенсорное взаимодействие остаётся в пределах толерантности перетаскивания, после чего местоположение касания оказывается больше толерантности перетаскивания.

Порядок событий:

  • uheldstart — срабатывает в начале удерживаемого перетаскивания;
  • uheldmove — срабатывает каждый раз при перемещении указателя;
  • uheldend — срабатывает по завершении удерживаемого перетаскивания.

Намерение масштабирования

Намерение масштабирования приводит к единственному событию uzoomstart, одному или более событиям uzoommove и финальному событию uzzoomend.

  • Движение на рабочем столе представляет собой сочетание shift + LMB вниз — перемещение мыши — LMB вверх, где время нажатия клавиши мыши превышает толерантность касания, а перемещение больше толерантности перетаскивания.
  • Сенсорное взаимодействие представляет собой двухточечное касание — щипок — двухточечный релиз.

Порядок событий:

  • uzoomstart — срабатывает в начале масштабирования;
  • uzoommove — срабатывает при изменении масштаба;
  • uzoomend — срабатывает после завершения масштабирования.

Атрибуты события

Объект события для всех событий ue включает следующие атрибуты в дополнение к тем, которые уже предоставлены jQuery:

var attr_list = [
  event.px_start_x,    // X-позиция в начале движения
  event.px_start_y,    // Y-ibid
  event.px_current_x,  // X-позиция, текущая
  event.px_current_y,  // Y-ibid
  event.px_end_x,      // X-позиция для x в конце движения
  event.px_end_y,      // Y-ibid
  event.px_delta_zoom, // Дельта масштабирования с момента последнего события движения
  event.px_delta_x,    // X-ibid
  event.px_delta_y,    // Y-ibid
  event.px_tdelta_x,   // X-дельта с начала движения
  event.px_tdelta_y,   // Y-ibid
  event.orig_target,   // Элемент под курсором в начале движения
  event.elem_bound,    // Элемент, к которому привязано событие
  event.elem_target,   // Элемент под курсором для *этого* события
  event.timeStamp,     // Временная метка этого события
  event.ms_elapsed,    // Истекшее время с начала движения
  event.ms_timestart,  // Время начала движения
  event.ms_timestop,   // Время окончания движения
];

Обработка ошибок

Этот код игнорирует плохой ввод и не генерирует исключения. Поскольку реализации JS (наконец) видят улучшенную обработку исключений, ожидайте, что это изменится в версии 2.x.

Пространство имён

Полностью поддерживается пространство имён событий jQuery, как показано в этом примере:

$( '#msg' )
  .on( 'utap.mytap',  onTapMsg  )
  .on( 'uheld.mytap', onHeldMsg );

$( '#msg' ).unbind( '.mytap' );

Используйте библиотеки, а не фреймворки

Это библиотека, которая стремится быть лучшей в своём классе. Если вы рассматриваете возможность использования SPA-фреймворка, пожалуйста, сначала прочитайте [Вы действительно хотите SPA-фреймворк?][0].

Примечания к выпуску

Авторские права (c) 2013–2016

Майкл С. Миковски (mike[dot]mikowski[at]gmail[dotcom])

Лицензия

Двойная лицензия под MIT или GPL версии 2 http://jquery.org/license

Версия 1.3.2

Обновлён для игнорирования большинства элементов ввода (input, textarea, select) по умолчанию. См. параметр ignore_select.

Версия 1.3.0

  • Удалены все ссылки на объект console
  • Изменены устаревшие bind и unbind на on и off

Версия 1.2.0-5

  • По умолчанию изменено значение параметра ignore_class на ignore_select
  • Теперь значение равно "", а не ":input"
  • Обновлён README и опубликован в npm (1.2.5)

Версия 1.1.9

Обновлён ue-test.html для правильной обработки масштабирования.

Версия 1.1.8

Функция preventDefault() перестала срабатывать на событиях, не контролируемых плагином.

Версии 1.1.0–7

Никаких изменений кода. Обновлены ключевые слова npm. Исправлены опечатки. Повышен номер версии для представления зрелости и...

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Плагин jQuery для унификации ввода с помощью мыши и сенсорного экрана. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/hbsxcjp-jquery.event.ue.git
git@api.gitlife.ru:oschina-mirror/hbsxcjp-jquery.event.ue.git
oschina-mirror
hbsxcjp-jquery.event.ue
hbsxcjp-jquery.event.ue
master