首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Chrome扩展中实现“被动事件侦听器”

在Chrome扩展中实现“被动事件侦听器”
EN

Stack Overflow用户
提问于 2018-05-17 17:43:43
回答 1查看 913关注 0票数 1

我使用一个Chrome扩展来修改Zoom增量,并在控制台中抛出这个错误:

代码语言:javascript
复制
Added non-passive event listener to a scroll-blocking 'mousewheel' event. Consider marking event handler as 'passive' to make the page more responsive.

我试图修改扩展以添加标记,使事件处理程序变得被动,但它似乎不起作用,我不知道为什么?

下面是代码:

代码语言:javascript
复制
window.addEventListener("mousewheel", function( event ) {
    if(enabled){
        //console.log("Scrolling Before: ",scrolling);
        if(!zooming){
            if(( event.wheelDeltaY > 0 || event.wheelDeltaY < 0 ) && !event.ctrlKey && !scrolling)
                scrolling = true;
        }
        //console.log("Scrolling: ",scrolling);
        if(!zooming && !scrolling){
                if(event.ctrlKey){
                zooming = true;
                tempZoomLevel = zoomLevel;
                if( event.wheelDeltaY > 0  ) {
                    tempZoomLevel += zoomIncrement;
                }
                if( event.wheelDeltaY < 0 ) {
                    tempZoomLevel -= zoomIncrement;
                }
                if((Date.now() - lastZoomEvent) > zoomDelay){
                    lastZoomEvent = Date.now();
                    zooming = false;
                    zoomLevel = tempZoomLevel;
                    chrome.runtime.sendMessage({zoom: zoomLevel, lastZoom:lastZoomEvent, from:"content"}, function(response) {
                    });
                }
                else
                    zooming = false;
            }
            event.preventDefault();
            event.stopPropagation();
        }
        /*else{

        }*/
        return false;
    }
}, {capture: true} );  /* Passive event listeners Mikhoul */

最后,您将看到我添加了“标志”{capture: true},但控制台中总是有此错误:

此外,如果您需要查看完整的代码:https://dl.dropboxusercontent.com/s/olon2g04mifo7gh/ZommIncrementsFork.zip,这里还有一个链接,指向我为个人使用而修改的整个注释:

我错过了什么使侦听器被动并停止在控制台中抛出此错误?

致以问候!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-17 17:53:33

来自文档

您需要在事件处理程序中设置passive: true,如下所示:

代码语言:javascript
复制
window.addEventListener("mousewheel", function( event ) {
  // all of your function code
  // ...
}, { passive: true})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50397545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档