Partage
  • Partager sur Facebook
  • Partager sur Twitter

location.hash

Ajouter un evenement onchage à location.hash ?

Sujet résolu
    7 janvier 2009 à 15:39:04

    Bonjour à tous,

    Voilà, j'aimerais faire un site tout en ajax, et je souhaiterais que les adresses soient du type index.html#articles/01-Blablabla

    Pour cela, j'utilise donc location.hash, qui me permet d'avoir ce qui est après le # (le # compris).

    Lorsqu'un visiteur arrive sur la page avec l'adresse index.html#articles/01-Blablabla, j'analyse location.hash pour faire une requête AJAX. Lors du chargement de la page, l'analyse est effectuée...

    Mon problème est le suvant : lorsqu'un visiteur utilise les boutons précédent/suivant, il faut que location.hash se refasse analyser... Mais comment le faire ?
    N'existe-t-il pas un évènement tel que location.hash.onchange() ou quelque chose comme ça ?


    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      7 janvier 2009 à 15:47:48

      Utilise un événement onclick que tu place sur les boutons et qui pointe vers la fonction location.hash
      Je pense que sa devrait marché
      • Partager sur Facebook
      • Partager sur Twitter
        7 janvier 2009 à 15:56:01

        Mais on ne peut pas placer un onclick sur les boutons précédent/suivant du navigateur...
        • Partager sur Facebook
        • Partager sur Twitter
          7 janvier 2009 à 15:58:54

          Ah d'accord je croyais que tu parler de bouton que tu créer sur ta page.

          Et bien dans ce cas tu place un onLoad sur le body.
          Comme ça à chaque fois que la page est chargé la fonction est appelé
          • Partager sur Facebook
          • Partager sur Twitter
            7 janvier 2009 à 16:08:10

            Oui, mais la page ne se recharge pas lorsqu'on appelle une ancre (#blabla), donc la fonction onload ne sera pas appelée :euh:

            PS : le site Jiwa gère les hash comme je le souhaiterais, mais je ne sais pas comment il fait...
            • Partager sur Facebook
            • Partager sur Twitter
              7 janvier 2009 à 17:29:54

              Tu peux lancer une boucle au chargement de la page, qui sert à détecter les changements dans le hash :
              window.onload = function(){
              	var hash = location.hash;
              	function hashChange(){
              		if(location.hash != hash){
              			hash = location.hash;
              			//Ici, on met ce qui doit être fait (par ex: appeler une fonction) lors de la modification du hash
              			alert('test');
              		}
              	}
              	var check = setInterval(hashChange, 500);
              }
              

              Mon exemple fait un alert à chaque changement dans le hash, tu as juste à remplacer le alert par ce que tu veux exécuter lors d'un changement de hash.
              • Partager sur Facebook
              • Partager sur Twitter
                7 janvier 2009 à 17:34:47

                Une boucle comme ça, ça bouffe mange du processeur non ?

                EDIT : Non, en fait, merci Elias, j'ai testé cette méthode, et je n'ai pas remarqué d'utilisation anormale de processeur, et tout fonctionne à merveille ! :D
                • Partager sur Facebook
                • Partager sur Twitter

                location.hash

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown