IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Hashchange appelé 2 fois sous IE


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 74
    Par défaut Hashchange appelé 2 fois sous IE
    Bonjour,

    Une fois n'est pas coutume... ça bloque sous IE.

    Je m'explique, je suis sur un site avec beaucoup d'ajax (appels avec Jquery) et donc je fais une navigation avec hashchange.

    La navigation fonctionne correctement. Que ce soit sous IE, firefox,...

    Par contre, lorsque j'ouvre une page dans un nouvel onglet, la fonction hashchange est appelée 2 fois dans cette nouvelle page alors que l'url ne change pas entre temps. Et ceci UNIQUEMENT sous Internet Explorer.

    Pour que ce soit plus clair voici le code :

    Partie hashchange


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $(function(){
      $(window).on('hashchange', function(){
     
    		if(window.location.hash)
    			historyChange(window.location.hash.substr(1));
                    else
    			historyChange('index');
    	})
     
    	$(window).hashchange();	
    });
    puis lorsque j'ouvre un nouvel onglet, je détecte que c'est un nouvel onglet, et donc je charge la page d'accueil qui contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php include('head.php'); ?>
     
    <div id="contener"></div>
     
    <?php  include('bottom.php');  ?>
     
     
    <script type="text/javascript">
      window.location.hash = '<?php echo $_SESSION['page'];?>?<?php echo $_SESSION['variable'];?>';
    </script>
    Comme on peut le voir ci-dessus, je charge la structure de la page, puis je modifie l'URL pour que la page souhaité soit chargé dans le contener via hashchange.

    Pour information, la fonction "historyChange" est un appel ajax

    Je tourné le problème dans tous les sens et je n'arrive pas à le résoudre. Dès que j'ouvre un lien dans un nouvel onglet alors la page demandé est chargée deux fois en passant deux fois par hashchange alors que l'url ne change pas

    Sous Firefox la page est chargée qu'une seule fois.

    J'espère avoir été assez clair et je vous remercie d'avance pour l'attention que vous pourrez prêter à ce problème.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonjour

    Je ne suis pas un spécialiste du "hash" mais pourquoi faire appel à un ancien plugin jQuery, l'utilisation normale ne suffit pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    window.onhashchange = function(){
        window.location.hash.substr(1);
    };

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. fonction qui s'exécute qu'une seule fois sous Firefox
    Par la.sophe dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/03/2006, 10h02
  2. bizarrerie avec l'appel system read sous linux.
    Par Hypnocrate dans le forum C
    Réponses: 20
    Dernier message: 20/11/2005, 02h47
  3. [Struts] Où faire mes appels à la database sous Struts ?
    Par brousaille dans le forum Struts 1
    Réponses: 18
    Dernier message: 07/09/2005, 00h41
  4. Peut-on faire appel aux interruptions sous Windows ?
    Par lorenfar dans le forum Assembleur
    Réponses: 10
    Dernier message: 09/05/2005, 18h42
  5. Réponses: 3
    Dernier message: 20/12/2003, 19h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo