Закрыть боковое меню по щелчку сзади

Я создаю приложение Angular и испытываю проблемы с закрытием меню в popstate. когда боковое меню открыто, и пользователь нажимает кнопку "Назад" на своем мобильном устройстве, я хочу, чтобы меню закрывало меню, для этого я использую pop-статус, подобный этому

@HostListener('window:popstate', ['$event'])
  onPopState(event) {
    if (this.isMenuOpened) {
      this.toggleSidebar();
    }
      return ;
  }

У меня проблема в том, что обратное действие также работает, поэтому меню закрывается, но также происходит обратное действие. я не могу использовать history.go(1) потому что это заставляет страницу загружаться снова, и я не хочу такого поведения.

у тебя были идеи?

2 ответа

Popstate не подлежит отмене согласно спецификации. Тем не менее, вы можете попробовать сделать это

@HostListener('window:popstate', ['$event'])
onPopState(event) {
    if (this.isMenuOpened) {
        event.preventDefault();
        history.go(1); // re-changes the url to what it should be
        this.toggleSidebar();
    }
    return ;
}

Попробуй это -

 $(window).on( "popstate", function(event){
          if( !event.originalEvent.state ){
          history.pushState( "nohb", null, "" );
          return;
          }
      });

Вместо history.go(1) используйте window.history.forward ()

window.history.forward () эта функция на первой странице использует историю браузера и заставляет ее перемещаться вперед, а не переходить на предыдущую страницу. Следовательно, каждый раз, когда пользователь нажимает кнопку "Назад", браузер перемещается или перемещает пользователя вперед и отображает ту же страницу.

Другие вопросы по тегам