Как устранить ошибку Pagespeed "Пассивные прослушиватели событий не используются для улучшения производительности при прокрутке"
При оптимизации сайта с помощью Google Pagespeed столкнулся с такой проблемой,
которая ведет на страницу с пояснением, что нужно использовать пассивный режим в событиях прокрутки колесика мыши и тач событий.
document.addEventListener('touchstart', onTouchStart, {passive: true});
Я использую на сайте библиотеку jquery.ui.touch-punch.js, но не могу понять куда в нее поместить свойство passive: true
Ответы (2 шт):
Автор решения: Андрей Рабой
→ Ссылка
Помогло здесь код для WordPress.
//Пассивные прослушиватели событий не используются для улучшения производительности при прокрутке
//© Калинский Евгений aka seojacky (https://t.me/big_jacky)
add_action( 'wp_footer', 'script_passive_event_listeners', 99 );
function script_passive_event_listeners(){
?>
<script>
(function() {
var supportsPassive = eventListenerOptionsSupported();
if (supportsPassive) {
var addEvent = EventTarget.prototype.addEventListener;
overwriteAddEvent(addEvent);
}
function overwriteAddEvent(superMethod) {
var defaultOptions = {
passive: true,
capture: false
};
EventTarget.prototype.addEventListener = function(type, listener, options) {
var usesListenerOptions = typeof options === 'object';
var useCapture = usesListenerOptions ? options.capture : options;
options = usesListenerOptions ? options : {};
options.passive = options.passive !== undefined ? options.passive : defaultOptions.passive;
options.capture = useCapture !== undefined ? useCapture : defaultOptions.capture;
superMethod.call(this, type, listener, options);
};
}
function eventListenerOptionsSupported() {
var supported = false;
try {
var opts = Object.defineProperty({}, 'passive', {
get: function() {
supported = true;
}
});
window.addEventListener("test", null, opts);
} catch (e) {}
return supported;
}
})();
</script>
<?php
}
Автор решения: Eugen
→ Ссылка
Вопрос задан давно, но вижу что тут ссылаются на мой gist. Я недавно исправил код в этом gist, так что лучше брать обновлённый код по ссылке. Ну и тем у кого WordPress рекомендую мой плагин Helper Lite for PageSpeed. Там эта функция внедрена .