Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不使用被动侦听器来提高滚动性能(Lighthouse Report)_Javascript_Jquery_Lighthouse - Fatal编程技术网

Javascript 不使用被动侦听器来提高滚动性能(Lighthouse Report)

Javascript 不使用被动侦听器来提高滚动性能(Lighthouse Report),javascript,jquery,lighthouse,Javascript,Jquery,Lighthouse,最近的一份灯塔报告指出了以下问题 不使用被动侦听器来提高滚动性能 它还提到 考虑将触控和滚轮事件侦听器标记为被动,以提高页面的滚动性能 我如何解决这个问题?这似乎与jQuery有关。在2016年,关于这个话题有一个长长的线索 简言之: jQuery无法向被动侦听器添加支持 预计这将添加到jQuery4中(4年后仍在使用) 5.x) 建议的修复方法是在jQuery加载之后立即添加此代码: 这已经成功了 // Passive event listeners jQuery.event.spec

最近的一份灯塔报告指出了以下问题

不使用被动侦听器来提高滚动性能

它还提到

考虑将触控和滚轮事件侦听器标记为被动,以提高页面的滚动性能


我如何解决这个问题?这似乎与jQuery有关。

在2016年,关于这个话题有一个长长的线索

简言之:

  • jQuery无法向被动侦听器添加支持
  • 预计这将添加到jQuery4中(4年后仍在使用)

  • 5.x)
  • 建议的修复方法是在jQuery加载之后立即添加此代码:


这已经成功了

// Passive event listeners
jQuery.event.special.touchstart = {
    setup: function( _, ns, handle ) {
        this.addEventListener("touchstart", handle, { passive: !ns.includes("noPreventDefault") });
    }
};
jQuery.event.special.touchmove = {
    setup: function( _, ns, handle ) {
        this.addEventListener("touchmove", handle, { passive: !ns.includes("noPreventDefault") });
    }
};

我在添加jquery-3.3.1.min.js的脚本标记之后添加了这个脚本标记。灯塔的性能不会再提高了。这里有没有人找到一个解决方案来真正摆脱报告“不使用被动侦听器来提高滚动性能”的目标是让lighthouse报告对你的老板/客户有好处,或者让页面实际表现得更好?@squarkandy我认为这两点对很多人都有意义;)这个补丁是否有一个非官方的jQuery发行版?它会阻止灯塔警告吗?我想你需要删除
ns.包括
// Passive event listeners
jQuery.event.special.touchstart = {
    setup: function( _, ns, handle ) {
        this.addEventListener("touchstart", handle, { passive: !ns.includes("noPreventDefault") });
    }
};
jQuery.event.special.touchmove = {
    setup: function( _, ns, handle ) {
        this.addEventListener("touchmove", handle, { passive: !ns.includes("noPreventDefault") });
    }
};