Advertisement
lgdelai

Fechando Menu e Busca ao Clicar em Voltar no Celular ou Browser

May 26th, 2022 (edited)
910
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <script>
  2.     // Adicione o atributo do Botão ou região que deseja monitorar o clique.
  3.     var monitorar_btn = ".main-navigation";
  4.  
  5.     // Adicione na ordem: Atributo do botão fechar menu, Atributo que exibirá a classe que define o botão como ativo, A classe que define o botão como ativo.
  6.     var btns = [
  7.         [".main-navigation button.menu-toggle",".main-navigation","toggled"],  // Menu Padrão Generatepress.
  8.         [".main-navigation span.search-item",".main-navigation span.search-item","active"],  // Busca Padrão Generatepress.   
  9.         ["#mobile-menu-control-wrapper button.menu-toggle","#mobile-menu-control-wrapper","toggled"],  // Menu Mobile Padrão Generatepress.
  10.         ["#mobile-menu-control-wrapper span.search-item","#mobile-menu-control-wrapper span.search-item","active"],  // Busca Mobile Padrão Generatepress.
  11.         ["#generate-slideout-menu button.slideout-exit","#mobile-header","toggled"],  // Menu Navegação como Cabeçalho Generatepress.
  12.         ["#mobile-header span.search-item","#mobile-header span.search-item","active"],  // Busca Navegação como Cabeçalho Generatepress.
  13.     ];
  14.  
  15.     var btn_fechar, atributo_btn, classe_ativa_btn;
  16.  
  17.     // Detectando botão clicado.
  18.     document.querySelector(monitorar_btn).onclick = function(){
  19.         for ( var j = 0; j < btns.length; j++ ){
  20.             if ( document.querySelector(btns[j][1]) !== null ){    //Se o attributo NÃO existir, o código pula este botão para evitar paralisação no código.
  21.                 if ( document.querySelector(btns[j][1]).classList.contains(btns[j][2]) ){    //Identificando botão clicado pela classe ativa e armazenando seus dados.
  22.                     btn_fechar = btns[j][0];
  23.                     atributo_btn = btns[j][1];
  24.                     classe_ativa_btn = btns[j][2];
  25.                     limpaHistorico_f();
  26.                 }
  27.             }
  28.         }
  29.         // Limpando Histórico.
  30.         function limpaHistorico_f(){
  31.             history.replaceState(null, document.title, location);
  32.             history.pushState(null, document.title, location);
  33.         }
  34.     }
  35.  
  36.     // Fechando Botões Clicados ao clicar em Voltar no Celular ou PC.
  37.     if (window.history && window.history.pushState){  //Verifica se o browser está tentando retornar a página anterior.
  38.         window.addEventListener("popstate", function(e){
  39.             if ( document.querySelector(atributo_btn).classList.contains(classe_ativa_btn) ){  //Só executa se o botão estiver clicado.
  40.                 var btn = document.querySelectorAll(btn_fechar);   //Obtém o botão fechar.
  41.                 for (var i = 0; i < btn.length; i++){btn[i].click();}  //JS Clica no botão para fechar.
  42.                 e.stopPropagation();
  43.             }
  44.         }, false);
  45.     }
  46. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement