📅  最后修改于: 2023-12-03 15:37:06.770000             🧑  作者: Mango
有时候在 Javascript 代码中,我们会遇到类似于以下警告:
[Violation] Added non-passive event listener to a scroll-blocking 'touchstart' event. Consider marking event handler as 'passive' to make the page more responsive.
这是浏览器在控制台中输出的警告信息,意思是我们添加了一个非被动的事件监听器到一个滚动阻塞的 'touchstart' 事件上。这种情况下,浏览器会执行一些额外的操作来保证页面的响应性,但是这也会影响浏览器性能。
为了解决这个问题,我们可以将事件监听器标记为被动的。被动监听器意味着它不会调用preventDefault(阻止默认事件),因此浏览器可以在不等待 JavaScript 的情况下处理事件。这可以通过将事件监听器添加一个对象选项 { passive: true }
来实现。
以下是一个示例代码:
element.addEventListener('touchstart', onTouchStart, { passive: true });
这里 element
是一个具有 touchstart
事件的 DOM 节点,onTouchStart
是一个事件处理函数。
总之,当你遇到这种警告信息时,可以尝试将监听器标记为被动的,以避免不必要的额外操作,提高浏览器页面的响应性。