Добавлен непассивный прослушиватель событий для события "touchstart" с блокировкой прокрутки

Внезапно сегодня из ниоткуда я начал получать это на каждой странице нашего сайта

Added non-passive event listener to a scroll-blocking 'touchstart' event.
Consider marking event handler as 'passive' to make the page more responsive

И это не раз или два.. как тысячи их....

enter image description here

Они в ярости.

Единственный способ остановить поток нарушений - закомментировать эту строку

  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js" type="text/javascript"></script>

Я читал другие посты о том, что означает это нарушение, но я действительно не вижу, что я сделал что-то другое между двумя часами назад и сейчас (я сделал полный откат, чтобы посмотреть, помогло ли это)

Это почти как если бы кто-то добавил ошибку в jquery.min.js, но я серьезно сомневаюсь, потому что тогда все ее получат.

Есть идеи? Я пытался отладить все, что мог, и до сих пор не знаю, что вызывает это?!?

ОБНОВИТЬ

Я заменил все <button><md-tooltip>text</md-tooltip></button> width <button data-toggle="tooltip" title="text"></button> Это позволило удалить 99% всех нарушений,

Ответ 1

Хорошо, копаем это немного больше, это не новое поведение, об этом сообщалось некоторое время назад, и jQuery все еще не исправил это.

Проблема заключается в том, что для того, чтобы обработчик был passive он должен быть уверен в том, что никогда не будет вызывать preventDefault() но jQuery не знает заранее...

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

Ответ 2

Это решает проблему для меня:

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 });
    }
  }
};

Ответ 3

Я использую различные события, и это, кажется, решает мой случай использования

(function () {
    if (typeof EventTarget !== "undefined") {
        let func = EventTarget.prototype.addEventListener;
        EventTarget.prototype.addEventListener = function (type, fn, capture) {
            this.func = func;
            if(typeof capture !== "boolean"){
                capture = capture || {};
                capture.passive = false;
            }
            this.func(type, fn, capture);
        };
    };
}());

Ответ 4

Ответ от Серхио правильный, добавьте его в нижний скрипт jquery. Если есть проблема с сенсорным пуском и сенсорным перемещением, просто добавьте тот же код и замените сенсорный запуск с сенсорным движением, например так:

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 });
    }
  }
};
jQuery.event.special.touchmove = {
  setup: function( _, ns, handle ){
    if ( ns.includes("noPreventDefault") ) {
      this.addEventListener("touchmove", handle, { passive: false });
    } else {
      this.addEventListener("touchmove", handle, { passive: true });
    }
  }
};