Javascript 鼠标&x27;车轮';事件在Firefox中完全冻结,但不在Chrome中

Javascript 鼠标&x27;车轮';事件在Firefox中完全冻结,但不在Chrome中,javascript,angular,firefox,mousewheel,Javascript,Angular,Firefox,Mousewheel,我对Firefox的鼠标事件有问题。我想像Fullpage.js一样创建一个由幻灯片组成的网站,但我不想使用它,我选择自己实现这个系统。但在Firefox中,滚动事件似乎会随着几个鼠标滚轮事件的触发而停止,从而冻结动画 我做了一个角度指令来触发“wheel”事件,并用节流时间调用定义滚动方向的函数 然后,我创建了一个组件来调用该指令并定义如何处理其结果 这就是我的指令的工作原理 @Directive({ selector: '[appMouseWheel]' }) export class Mo

我对Firefox的鼠标事件有问题。我想像Fullpage.js一样创建一个由幻灯片组成的网站,但我不想使用它,我选择自己实现这个系统。但在Firefox中,滚动事件似乎会随着几个鼠标滚轮事件的触发而停止,从而冻结动画

我做了一个角度指令来触发“wheel”事件,并用节流时间调用定义滚动方向的函数

然后,我创建了一个组件来调用该指令并定义如何处理其结果

这就是我的指令的工作原理

@Directive({ selector: '[appMouseWheel]' })
export class MouseWheelDirective implements OnInit {
  @Output() mouseWheelUp = new EventEmitter();
  @Output() mouseWheelDown = new EventEmitter();


  private mouse = new Subject<any>();
  private mouseObs = this.mouse.asObservable();

  @HostListener('wheel', ['$event']) onMouseWheel(event: any) {
    console.log('debounce');
    event.preventDefault();
    this.mouse.next(event);
  }

  public ngOnInit() {
    this.mouseObs.pipe(throttleTime(1000)).subscribe(x => this.mouseWheelFunc(x));
  }

  public mouseWheelFunc(event: any) {
    const delta = Math.max(-1, Math.min(1, (-event.deltaY || -event.detail)));

    if (delta > 0) {
      this.mouseWheelUp.emit(event);
    } else if (delta < 0) {
      this.mouseWheelDown.emit(event);
    }

    if (event.preventDefault) {
      event.preventDefault();
    }
  }
}
@指令({选择器:'[appMouseWheel]})
导出类MouseweelDirective实现OnInit{
@Output()mouseweellup=neweventemitter();
@Output()mouseWheelDown=新的EventEmitter();
私人鼠标=新主题


如果有人知道答案,我将不胜感激!

firefox浏览器中有任何错误吗?没有,正如您在给定链接中看到的那样。您可以通过鼠标一步一步地“滚动”使firefox正常工作,但这不是预期的行为:/