[Нарушение] Добавлен непассивный прослушиватель событий к событию "колесо" с блокировкой прокрутки. Рассмотрите обработчик событий маркировки как "пассивный", чтобы сделать страницу более отзывчивой.
Это предупреждение, похоже, нервничает, чтобы быть честным. У меня есть событие, когда мне иногда нужно вызвать preventDefault()
Есть ли способ отметить событие как явно НЕ пассивное и избавиться от этого предупреждения? Я знаю, что это не мешает исполнению, но это раздражение. Все, что я могу найти, это отметить его пассивным, но это настольное приложение, для которого не требуется пассивный маркер для оптимизации прокрутки.
Я не уверен, что хром думал, когда они реализовали это как предупреждение по умолчанию, чтобы загромождать консоль dev. Я чувствую, что что-то вроде кнопки согласия теперь в EULAS, не читайте, просто нажмите "ОК", предупреждение о cookie, просто нажмите "ОК"... Я не хочу исправлять это, я хочу игнорировать его, сознательно.
Укажите пассив: false при добавлении слушателя:
el.addEventListener('click', someFn, { passive: false });
См. Https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener.
Вышеупомянутое решение работает, но требует изменения для каждого вызова addEventListener.
Если вы предпочитаете отключать предупреждения с помощью одного изменения, которое влияет на все вызовы addEventListener, которые вы уже написали в старой форме, вы можете сделать что-то вроде следующего (изменено с qaru.site/questions/13841202/...). Вы можете дополнительно изменить это, если вы хотите, чтобы он выборочно обрабатывал/сообщал/и т.д.
var addEventListener_orig = EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener = function(type, handler, opts_orig) {
var opts;
if(opts_orig === false || opts_orig === true)
opts = { capture: opts_orig, passive: false };
else if(!(opts_orig && opts_orig.constructor == Object))
opts = { passive: false };
else
opts = opts_orig;
arguments[2] = opts;
return addEventListener_orig.apply(this, arguments);
};
Обратите внимание: поскольку это изменяет базовый объект, сторонние библиотеки могут действовать по-другому (хотя я не могу придумать какой-либо сценарий, где это могло бы произойти, если только библиотека 3p также не будет использовать патч addEventListener, как указано выше, если я не ошибаюсь, просто заполняет значения по умолчанию, которые в противном случае используются, когда они не были явно предоставлены, и тем самым предупреждает об этом)
options
, дляuseCapture
будет установленоuseCapture
true? developer.mozilla.org/en-US/docs/Web/API/EventTarget/...