Можно ли как-то отключить подгрузку jquery__event_type_pointerclick для стандартных блоков? Дело в том, что я использую некоторые third-party плагины и код полифила FastClick их ломает (некоторые последовательности событий перестают работать) На сколько он важен?
Что значит "стандартные блоки"? В bem-components используются pointer-события, например
pointerclick
в блокеlink
https://github.com/bem/bem-components/blob/v2/common.blocks/link/link.js#L62 Если отключитьjquery__event_type_pointerclick
, то событияpointerclick
не будет и все блоки, завязанные на них не будут работать. Что за third-party плагины?"Стандартные блоки" - это как раз link, button и другие. jquery__event_type_pointerclick содержит в себе библиотеку fastclick. Я так понимаю, что ней реализована некая оптимизация работы click на мобильных. Мой вопрос как раз был в том, делает ли она что-то кроме оптимизации, или нет? Проблема в том, что она (именно fastclick) ломает работу некоторых jQuery-плагинов.
Дим, а какие плагины ломаются и как именно?
Ломается плагин-виджет от uploadcare.com (https://github.com/uploadcare/uploadcare-widget), вот этот https://github.com/dangrossman/bootstrap-daterangepicker и typeahead.
В первом случае странный баг, как-то связанный с тем, что не теряется фокус после нажатия, с остальными - в некоторых случаях не отрабатывают события клика на элементы.
В том, что проблема с fastclick я убежден - отключаешь его вручную и бага нет (также, как и нет на desktop'е), но вот где именно ошибка - разобраться времени не было.
Пам-пам? Может кто-нибудь ответить?
совсем без pointerclick все сломается. в качестве костыля можно на своем уровне переопределить
jquery__event_type_pointerclick
и триггеритьpointerclick
на обычныйclick
. теоретически, для desktop-блоков должно помочь.но по-хорошему нам бы разобраться, почему fastclick ломает плагины.
// cc @narqo @aristov
я думаю нужно запатчить jquery__event_type_pointerclick, чтобы он только новые события предоставлял и не трогал старые — тогда на левые плагины это никак не должно влиять
@veged а это сложно сделать? :)
@dkushnikov пока не знаю, нужно внимательнее в код посмотреть, но вроде не должно быть сложно (cc @dfilatov @narqo )
В общем, я разобрался как починить временно. Нужно на активные ноды таких плагинов ставить класс needsclick.
Возникает только вопрос: можно ли это как-то системно сделать?