Как я могу использовать код Google / MBP FastButton с магистральными событиями - PullRequest
5 голосов
/ 12 декабря 2011

Кнопки на мобильных устройствах работают медленно (в большинстве браузеров задержка составляет не менее 300 мс из-за обнаружения перетаскивания).Google написал некоторый javascript, чтобы исправить это: http://code.google.com/mobile/articles/fast_buttons.html

Пользователи Mobile HTML5 Boilerplate интегрировали это в свой пакет: https://github.com/h5bp/mobile-boilerplate/blob/master/js/mylibs/helper.js#L86

Я хочу выяснить, как я могу легко использовать это с магистралью,Что-то вроде:

events: {
  "fastbutton button.save": "save"
}

Где быстрая кнопка заменяет щелчок мышью или mousedown на код быстрой кнопки.Я ожидаю, что мне нужно будет немного переписать код MPB.fastbutton.Кто-нибудь делал это?

Ответы [ 2 ]

8 голосов
/ 20 февраля 2012

Вместо создания «быстрых кнопок» повсюду, вероятно, разумнее использовать библиотеку, подобную FastClick , которая будет прозрачно преобразовывать касания в события щелчка на элементе касания и избавляться от задержки в 300 мс.

Это так же просто, как new FastClick(document.body), и вы готовы к работе.

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

1 голос
/ 13 декабря 2011

Я уверен, что это не сработает так, как вы хотели бы. Вместо того, чтобы иметь дополнительное событие, такое как fastclick, вы должны определить элемент как fastButton. На самом деле вам нужно создать экземпляр fastbutton, в который вы передаете элемент и код, например:

new MBP.fastButton($("button.save"), function() { this.save(); }.bind(this));

В случае магистрали вы можете легко сделать это в функции initialize () вместо объекта events.

// извините, просто прочитайте, что вы на самом деле не ищете это:)

...