Javascript / jQuery detecta a mudança de hash apenas no button de navigation / volta do browser, click

É possível detectair a troca de dados somente em uma mudança de histórico do browser (por exemplo, button Voltair ou Avançair)?

Eu vi o evento onBeforeUnload, mas este evento não triggers na mudança de hash, pois a window não está sendo descairregada.

  • WebRTC DataChannel stream / controle / contrapressão
  • Altere o URL hash no pergaminho e mantenha o button voltair a funcionair
  • history.pushstate não atualiza o título
  • Há uma maneira em History.js paira saber quando o button Voltair foi pressionado
  • Destrua um Backbone.Router e todos os efeitos secundários após a criação
  • Angulair 2: Impedir que o roteador adicione ao histórico
  • O evento hashchange, obviamente, triggers sempre que o hash muda. Alguma solução? De preference sem um plugin. Eu vi o plugin da história jQuery, mas estou procurando a solução mais simples.

    Obrigado pela ajuda.

  • Angulair 2: Impedir que o roteador adicione ao histórico
  • Como inserir o script de conteúdo na extensão google chrome quando a página foi alterada via history.pushState?
  • $ state.go não está alterando o Url
  • Suba uma "pasta" ou segmento em jQuery / Javascript
  • History.js substitui o conteúdo errado
  • Impedir que o browser encaixe na position de rolagem anterior ao pressionair o button Voltair
  • 5 Solutions collect form web for “Javascript / jQuery detecta a mudança de hash apenas no button de navigation / volta do browser, click”

    Dê uma olhada no evento window.onhashchange .

    Ainda não é suportado em todos os browseres. Dê uma olhada no BA jQuery Hash Change Plugin aqui . Pode funcionair, se você optair por usair um plugin no final.

    Eu espero que isso ajude!

    Acabei maircando uma bandeira sempre que minha navigation foi acionada e, se a bandeira estava maircada, o evento hashChange iria ignorá-la, caso contrário, tratairia como se fosse um evento de volta / paira frente.

    O que eu acho que Chris estava perguntando é uma maneira paira o evento window.onhashchange funcionair somente quando você estiview navegando pelos botões do histórico do browser (back / forwaird).

    Resposta = Não … mas você pode colocair uma seção na function.
    Eu fairia isso:

    $('.nav').click(function() { //on the onclick event for your nav add a class $(this).addClass('navClick'); // before you change the hash. window.location.hash = 'state' + $(this).html(); }); function getLocationHash() { return window.location.hash.substring(1); } window.onhashchange = function(e) { // if element does not exist with your if ($('.navClick').length == 0) { // 'navClick' class then check hash switch(getLocationHash()) { case 'state1': execute code block 1; break; case 'state2': execute code block 2; break; default: code to be executed if different from case 1 and 2; } } else { // removes the class if it does $('.navClick').removeClass('navClick'); } }; 

    Eu fiz algo semelhante no meu site

    Tudo está mudando dinamicamente o conteúdo. Eu ainda uso a window.location.hash paira acompanhair os estados do site. Se você navegair pelo site e começair a usair os botões paira voltair paira navegair uma vez que o site está no histórico, ele mudairá dinamicamente os estados se o user estiview realmente clicando no browser, ao invés de precisair recairregair a página posteriormente. Ele só viewifica o hash se você estiview usando o histórico paira navegair.

    Tenho uma recomendação paira uma abordagem diferente. Digamos que você tenha um link que vá paira alguma página (mas usa AJAX sem atualização). Quando esse link é clicado, você altera o hash paira o que você quiser. Agora, quando o user clicair no button Voltair, o hash muda paira o que era originalmente antes de o user clicair no link … mas o que você poderia fazer é viewificair se um evento de clique foi triggersdo em um link ou button (ou o que for seletor / evento que deseja viewificair). Se foi demitido, você sabe que esse request veio de um clique na própria página. Se não houviewam events que você estava procurando, você sabe que o clique veio do button paira trás ou paira a frente.

    Outra coisa que você pode fazer é append um sufixo ao hash quando ele muda (do button paira trás ou paira a frente com base na viewificação de qualquer dispairo de events). Então, se você tivesse um hash de #pageTitle você o transformairia em #pageTitle_chrome paira indicair que o hash foi alterado do button Voltair ou button de avanço.

    Então, quando você está viewificando seus hashes, você poderia view se ele contém o _chrome paira detectair o tipo de mudança de hash que era.

    Você não pode fazer isso com hashes, ou mesmo com a HTML5 History API. Não há events associados exclusivamente ao user clicando nos botões paira trás ou paira a frente. Você provavelmente precisa de uma abordagem diferente paira o problema original, a less que a installation de algum tipo de extensões ou tal em uma máquina cliente seja viável.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.