javascript - свойства - обработчик событий js




Пометьте обработчик событий как пассивный, чтобы сделать страницу более отзывчивой (2)

Для тех, кто получает это предупреждение впервые, это связано с новейшей функцией Passive Event Listeners , которая была реализована в браузерах сравнительно недавно (лето 2016 года). С https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md :

Пассивные прослушиватели событий - это новая функция в спецификации DOM, которая позволяет разработчикам подключаться для повышения производительности прокрутки, устраняя необходимость прокрутки, чтобы блокировать прослушиватели событий касания и прокрутки. Разработчики могут пометить слушателей касанием и колесом с помощью {passive: true}, чтобы указать, что они никогда не вызовут warnDefault. Эта функция поставляется в Chrome 51, Firefox 49 и включена в WebKit. https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md

Смотрите также: Что такое пассивные слушатели событий?

Возможно, вам придется подождать, пока ваша библиотека .js не осуществит поддержку.

Если вы обрабатываете события косвенно через библиотеку JavaScript, вы можете зависеть от поддержки этой библиотеки этой функцией. По состоянию на август 2016 года, похоже, что ни одна из основных библиотек не реализовала поддержку. Некоторые примеры:

Я использую молоток для перетаскивания, и он загружается другими вещами, как это предупреждающее сообщение говорит мне.

Обработка события ввода «touchstart» была отложена на X мс из-за занятости основного потока. Пометьте обработчик событий как пассивный, чтобы сделать страницу более отзывчивой.

Поэтому я попытался добавить «пассивный» к слушателю так

Hammer(element[0]).on("touchstart", function(ev) {
  // stuff
}, {
  passive: true
});

но я все еще получаю это предупреждение.


это скрыть сообщение

    jQuery.event.special.touchstart = 
    {
      setup: function( _, ns, handle )
      {
        if ( ns.includes("noPreventDefault") ) 
        {
          this.addEventListener("touchstart", handle, { passive: false });
        } 
        else 
        {
          this.addEventListener("touchstart", handle, { passive: true });
        }
      }
    };




hammer.js