网站搜索

javascript - 在 Firefox 中阻止 Ctrl+鼠标滚轮的默认行为


在我的应用程序中,我有一些地方将自定义缩放和自定义滚动分别绑定到 Ctrl+鼠标滚轮 和 Shift+鼠标滚轮。代码如下:

private mousewheelCallback = (event: MouseWheelEvent) => {
    if(event.ctrlKey == true) {
        if(event.deltaY > 0) {
            this.zoomOut();
        }
        else {
            this.zoomIn();
        }
    }
    else {
        if(event.deltaMode == event.DOM_DELTA_PIXEL) {
            if(event.shiftKey == true){
                this.scrollbarX.nativeElement.scrollLeft += event.deltaY;
                event.preventDefault();
            }
            else {
                this.scrollbarY.nativeElement.scrollTop += event.deltaY;
                event.preventDefault();
            }
        }
    }

    return false;
}

在 Chrome 下这效果很好,但 Firefox 并不愿意执行事件处理程序,尽管它返回 false 并且也调用了 event.preventDefault();

答案#1

我还没有测试过,但可以尝试使用 event.stopPropagation();。更多信息请参阅 https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault