- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的 Angular 4 项目中,当我点击日期选择器或选择选项菜单并在 Google Chrome 中运行时,我收到以下警告:
[Violation] Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking event handler as 'passive' to make the page more responsive.
我已经在这里看到一个关于堆栈溢出的问题,但那个问题是关于“touchstart”,而不是“mousewheel”。我真的不知道我可以给你什么代码示例,因为我不知道警告来自哪里。有人可以帮我解决这个问题吗?
最佳答案
Passive event listeners are a new feature in the DOM spec that enable developers to opt-in to better scroll performance by eliminating the need for scrolling to block on touch and wheel event listeners. Developers can annotate touch and wheel listeners with {passive: true} to indicate that they will never invoke preventDefault. This feature shipped in Chrome 51, Firefox 49 and landed in WebKit. Reference.
Chrome 抛出警告 ...
[Violation] Added non-passive event listener to a scroll-blocking 'wheel' event. Consider marking event handler as 'passive' to make the page more responsive.
...当您绑定(bind)到鼠标滚动事件时,本质上警告您可能通过调用 preventDefault()
抑制了事件中的滚动性能或禁用了默认事件。
当您尝试在被动事件中调用 preventDefault()
时,Chrome 也会抛出错误。
Unable to preventDefault inside passive event listener invocation.
Firefox 对此有类似的错误,但似乎没有像 Chrome 那样发出警告:
Ignoring ‘preventDefault()’ call on event of type ‘wheel’ from a listener registered as ‘passive’.
运行以下代码片段并以详细模式查看 Chrome 控制台。
// WILL throw violation
document.addEventListener("wheel", function(e) {
e.preventDefault(); // prevents default browser functionality
});
// will NOT throw violation
document.addEventListener("wheel", function(e) {
e.preventDefault(); // does nothing since the listener is passive
}, {
passive: true
});
类似SO post是关于 this 在 javascript 中的含义的。
By marking a touch or wheel listener as passive, the developer is promising the handler won't call
preventDefault()
to disable scrolling. This frees the browser up to respond to scrolling immediately without waiting for JavaScript, thus ensuring a reliably smooth scrolling experience for the user.
Angular 还没有为此实现一个通用/易用的解决方案,可以遵循 here .
然而,由于 typescript 被编译为 javascript,在 typescript 中实现上述代码片段仍应消除违规。
违规行为本身对应用程序性能没有任何危害,但您的事件函数的内容可能会 - 因此 Chrome 会抛出此警告。请注意,此警告仅在 Verbose console mode
中显示,不会向一般用户显示。
据我所知,没有办法禁用此类警告,因为它们是由 Chrome 在运行时对代码的解释生成的。
关于Angular 4 - 向滚动阻塞 'mousewheel' 事件添加了非被动事件监听器。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50983289/
我正在将我的项目转换为 cordova 应用程序。但我陷入了鼠标滚轮事件。 Cordova 的这个事件有什么相同之处? 我有一个 Canvas 和上面的一些物体。我使用鼠标滚轮事件放大/缩小。我想将它
有什么方法可以使用子上的鼠标滚轮处理程序来确定鼠标是向上还是向下滚动?例如 Private Sub PictureBox1_MouseWheel(ByVal sender As Object, ByV
我正在尝试为 svg 实现鼠标滚轮事件。我正在使用下面的代码。如果我使用 $(document).bind() ,这可以正常工作,但如果我使用 svg id svgmain ,它就不起作用。我希望鼠标
我有一个 Panel,其中 AutoScroll 为真。该面板包含许多较小的面板,它们像瓷砖一样填充所有可用空间。当要显示的子面板太多时,我会按预期获得垂直滚动条。 这些“图 block ”中的每一个
场景: 我需要创建一个由鼠标滚轮触发的曲线动画(弧形)。 所以,我想出了一些代码。 See demo here var arc = { center: [-200, ($(window).he
一段时间以来,我一直在使用 Robot 类模拟鼠标事件,一切顺利,直到我尝试使用 mouseWheel 函数进行滚动。我只有这条简单的线: Robot robot = new Robot();
长话短说,我正在尝试将“鼠标滚轮”事件绑定(bind)到带有滚动条的 div。 当我在我创建的插件之外使用它时,我的代码可以工作,但是当我尝试将它变成插件时,它什么也不做。我尝试将“鼠标滚轮”更改为单
我目前在我的页面顶部有一个灵活的 slider ,它应该在滚动时改变幻灯片,并且在某个点之后它应该回到正常的滚动行为。 我想做的是最初锁定滚动(是的,我知道改变滚动行为对用户体验来说是一件可怕的事情,
我创建了一个简单的应用程序,用于使用鼠标滚轮缩放图片框内的图像。它在我的开发笔记本电脑 (Win10) 上完美运行。但是当我在我的台式电脑(Win7)上运行它时,缩放(使用鼠标滚轮)功能不起作用。 下
我在下面使用下面的代码,在不同的方向滚动两个 div () 但我很想知道你是否可以限制滚动,这样它每次滚动只触发一次(而不是不断滚动并发送我的函数进入无限循环。 $('.page-left, .pag
我有一个 Windows 窗体(在 C#.NET 中工作)。 该表单顶部有几个面板,底部有一些 ComboBoxes 和 DataGridViews。 我想在顶部面板上使用滚动事件,但是如果选择例如C
我有一个 WPF 应用程序,它使用 WindowsFormsHost 控件来承载 Windows.Forms 控件。 我试图实现 MouseWheel 事件 - 但似乎 MouseWheel 事件从未
嗨,我有一个表单,里面有几个框架。 对于某些框架,我希望滚动内容(或至少处理鼠标滚轮事件)。 我尝试过以下方法: 只需为每个帧分配一个 OnMouseWheel 事件处理程序 重写父窗体的 Mouse
我有一个 StackPanel,里面有一个 Listview。 我希望能够在窗口内滚动,以更改 selectedItem。 澄清; 我想在滚动鼠标滚轮时更改我的 ViewModels Selected
如何设置 GNU screen 以允许鼠标滚轮在回滚缓冲区中滚动?我尝试在 Google 上搜索此事,但大多数点击都是关于如何允许 screen 内的应用程序使用滚轮。 最佳答案 我相信您可以将这样的
有很多关于如何水平滚动 div 内容的示例。问题是,当您水平滚动的元素位于本身可垂直滚动的页面中间时(由于其内容比窗口大小长),页面会垂直滚动,div 的内容也会水平滚动。 示例如下:http://j
我有一个水平滚动的网站。我使用 mousewheel.js 通过鼠标滚轮水平滚动(或上下滚动)。我正在使用 CSS Tricks 中的片段像这样: $("body").mousewheel(funct
我正在尝试处理 Safari 上的 mouseWheel 事件。您可以在下面看到我的完整功能示例 hmtl5/js 代码,用于测试 mouseWheel 事件。 我的代码在每个 mouseWheel
我正在为小型企业开发应用程序,但我遇到了水平滚动查看器的问题。 水平滚动查看器出现在屏幕上,但鼠标滚轮不起作用。 我有这个 XAML 代码:
我正在创建一个 UserControl,它应该在鼠标悬停在控件上并且 MouseWheel 旋转时使用react。 目前我正在这样做,如下所示: public MyUserControl()
我是一名优秀的程序员,十分优秀!