web-dev-qa-db-fra.com

Comment détecter les changements d'URL avec jQuery

Comment jQuery peut-il détecter les modifications apportées à une URL?

Par exemple: si un utilisateur accède à une page site.com/faq/ rien ne se voit, mais s'il va à site.com/faq/#open jquery le détecte et fait quelque chose.

28
skywind

Essaye ça

$(window).on('hashchange', function(e){
 // Your Code goes here
});

Ça marche pour moi

25
user3354817

Vous pouvez utiliser l'événement hashchange.

function hashchanged(){
  var hash = location.hash.replace( /^#/, '' );
 //your code
}

window.addEventListener("hashchange", hashchanged, false);

ou intégrer un plugin jquery hashchange

$(function(){

  // Bind the event.
  $(window).hashchange(hashchanged);

  // Trigger the event (useful on page load).
  hashchanged();

});

function hashchanged(){
 var hash = location.hash.replace( /^#/, '' );
 //your code
}
22
UnLoCo

Regardez simplement window.location.hash au chargement de la page:

$(document).ready(function() {
    if(window.location.hash === "open")
    {
        //Show something
    }
});

Ou liez à l'événement hashchange de la fenêtre:

$(document).ready(function() {
    $(window).hashchange(hashchanged);
});

function hashchanged()
{
    //Show something
}
8
James Hill

Essaye ça:

if (window.location.hash) {
    // Fragment exists, do something with it
    var fragment = window.location.hash;
}

Juste pour référence, la partie d'une URL spécifiée par le # est appelé un "fragment"

2
Rory McCrossan

Si vous avez une URL de site.com/faq/#open, alors vous pouvez faire

var hash = window.location.hash

obtenir hash = 'open'

1
Utku Yıldırım