当前位置: 首页 > 面试题库 >

考虑将事件处理程序标记为“被动”,以使页面更具响应性

廉元龙
2023-03-14
问题内容

我正在使用锤子进行拖动,在加载其他东西时它变得不稳,因为此警告消息告诉我。

由于主线程繁忙,“ touchstart”输入事件的处理延迟了X ms。考虑将事件处理程序标记为“被动”,以使页面更具响应性。

所以我试图像这样向听众添加“被动”

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

但我仍然收到此警告。


问题答案:

对于那些首次收到此警告的用户,这是由于最近才在浏览器中实现了称为“ 被动事件侦听
器”的最新功能(2016年夏季)。从https://github.com/WICG/EventListenerOptions/blob/gh-
pages/explainer.md

被动事件侦听器
是DOM规范中的一项新功能,使开发人员可以选择消除滚动和阻塞事件监听器而无需滚动来选择更好的滚动性能。开发人员可以使用{passive:true}注释触摸和滚轮侦听器,以指示他们将永远不会调用preventDefault。该功能已在Chrome
51,Firefox
49和WebKit中提供。有关完整的官方说明,请在此处了解更多信息。

另请参阅:什么是被动事件侦听器?

您可能需要等待.js库实现支持。

如果您是通过JavaScript库间接处理事件,那么您可能会受到该特定库对功能的支持的支配。截至2019年12月,似乎所有主要图书馆都未实现支持。一些例子:

  • jQuery.js- 持续存在的问题:https : //github.com/jquery/jquery/issues/2871
  • React.js- 持续存在的问题:https : //github.com/facebook/react/issues/6436
  • Hammer.js- 因未跟进而关闭:https : //github.com/hammerjs/hammer.js/pull/987
  • perfect-scrollbar- 已关闭:https: //github.com/noraesae/perfect-scrollbar/issues/560
  • AngularJS- 由于无法修复而关闭:https : //github.com/angular/angular.js/issues/15901


 类似资料:
  • 我用锤子来拖拽,当装载其他东西时,锤子会变得颠簸,这条警告信息告诉我。 由于主线程繁忙,对触摸启动输入事件的处理延迟了X毫秒。考虑将事件处理程序标记为“被动”,以使页面更具响应性。 所以我试着像这样给听众加上被动语态 但是我仍然收到这个警告。

  • 我的react中有一个滚动的事件处理程序,我正试图使它成为被动的。但它不起作用,我在控制台中不断收到以下警告: 将事件处理程序标记为“被动”以使页面更加响应。 下面是我阅读事件的地方: 这是我的EventContainer中的函数。js文件: 在这一行: {被动:被动} 我得到以下错误在我的编辑器: 参数类型{passive:boolean}不可分配给参数类型boolean 有人知道我做错了什么吗

  • 问题内容: 我有一个LoginForm组件。我要检查之前提交,这两个和设置。我尝试使用此代码(省略了很多内容): 但是,我在事件处理程序中得到一个,说是空的。 我该怎么办? 问题答案: 你需要设置的方法,因为现在是,对于此操作,您可以使用 或者您可以使用箭头功能

  • 事件就是用户或浏览器自身执行的某种动作。诸如click、load 和mouseover,都是事件的名字。而响应某个事件的函数就叫做事件处理程序(或事件侦听器)。事件处理程序的名字以"on"开头,因此click 事件的事件处理程序就是onclick,load 事件的事件处理程序就是onload。为事件指定处理程序的方式有好几种。 13.2.1 HTML事件处理程序某个元素支持的每种事件,都可以使用一

  • 下面是我的代码片段: 现在java用'unhandled exception type SQLException)标记指示语句(以及后面的所有语句)。gfsql.dosql抛出此异常并定义为: public ResultSet doSQL(String sqlCommand)抛出SQLException{ 有趣的是--如果我像这样重复“catch”块: 未标记“未处理”错误。(但是,重复的catc

  • 有没有办法让React组件中定义的事件处理程序在类似HTML的标记中可以访问?我的意思是: 我的目标是定义,但目前我只知道如何创建诸如和之类的参数。 如何使事件处理程序通过TSX访问,类似于使用事件?