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

JavaScript Discussion :

ancres & window.history


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut ancres & window.history
    Bonjour,

    Un dictionnaire en ligne affiche un formulaire permettant d'écrire un mot, le serveur renvoie la traduction et des exemples. L'adresse dans la barre reste toujours la même à chaque nouvelle page affichée.

    Sur chacune des pages, l'utilisateur _peut_ accéder à des informations supplémentaires via un bouton. La technique utilisée est celle des ancres. La barre d'adresse affiche dans ce cas l'adresse suivie de '#quelque_chose'.
    Le problème est qu'ensuite la navigation page précédente ou suivante (avec les flèches) s'arrête donc deux fois sur la page correspond à ce mot : une fois sans le # et une fois avec.

    Je voudrais que l'utilisateur puisse naviguer sans revenir sur cette ou ces page(s) supplémentaires. Est-ce possible ? J'ai recherché du côté de window.history, mais j'avoue que je suis largué. Merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Éventuellement en gérant les liens en javascript au lieu de les laisser aux href avec du location.replace ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Éventuellement en gérant les liens en javascript au lieu de les laisser aux href avec du location.replace ?
    Ils sont gérés en JS mais apparemment la seule mention d'un :target dans la feuille de style suffit à générer un #... dans la barre d'adresse

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Oui elle suffit à gérer, mais si tu laisses le href opérer le lien est ajouté dans la liste history, si tu inhibes le href au moyen d'un preventDefault et que tu fais le redirection en js avec un self.location.replace je pense qu'il n'ajoutera pas l'url avec ancre dans l'history ..
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    si tu inhibes le href au moyen d'un preventDefault et que tu fais le redirection en js avec un self.location.replace je pense qu'il n'ajoutera pas l'url avec ancre dans l'history ..
    Qu'entends-tu par inhiber le href ?

    Pour l'instant, je patauge... mais surement dans les bonnes eaux : j'ai effectivement une URL qui ne rentre pas dans l'historique de navigation, mais ce n'est pas la bonne :
    Le clic amène à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function allervoirailleurs(){
    window.location.replace('#ancre');
    return false;
    }
    Effectivement l'URL d'origine (disons www.monsite.fr) n'est plus dans l'historique mais juste www.monsite.fr#ancre... Bref, l'inverse de ce que je voudrais.
    J'ai essayé de placer un event.prevenDefault(); avant le replace, ça rend le lien inopérant. Après, le lien marche mais c'est toujours www.monsite.fr#ancre qui reste dans l'historique.

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    inhiber le href = empecher le navigateur de lancer la requete de changement de page.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function allervoirailleurs()(e) {
      e.preventDefault();
    window.location.replace('#ancre');
    }
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="www.google.fr" onclick="allervoirailleurs()"> ne pas aller sur google</a>
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    Mais je veux atteindre l'ancre !

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    tu l'atteins au moyen du location replace js. l'inhibition ne concerne que le href ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    Bon, j'ai trouvé un petit truc qui me satisfait à moitié : connaissant par avance le hash (c'est bien comme ça que ça s'appelle ?) qui peut être rajouté à l'adresse du site (#openModal), j'exécute ce bout de code à l'évènement onLoad :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var url_= location.href;
    if (url_.indexOf('openModal')!== -1) {window.history.go(-1);}
    et hop, on saute l'indésirable !

    Pas compliqué. L'ennui, c'est que :
    1 - ça ne marche qu'avec la touche page précédente, pas suivante. Il faudrait détecter laquelle c'est et remplacer go(-1) par go(1).
    2 - la page se charge quand même pour rien... du moins je crois que onLoad n'est appelé qu'une fois la page chargée.

  10. #10
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    ou plus mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var petard = window.location.hash;
    if (petard=='#openModal') {window.history.go(-1);}

  11. #11
    Membre du Club
    Profil pro
    manager
    Inscrit en
    Janvier 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : Irlande

    Informations professionnelles :
    Activité : manager

    Informations forums :
    Inscription : Janvier 2011
    Messages : 73
    Points : 47
    Points
    47
    Par défaut
    éh.... non ! je n'arrivais pas à écrire un code satisfaisant dans tous les cas avec ces fichues ancres... Du coup, j'ai réécrit la création de la fenêtre modale sans ancre (pur CSS) et fini les problèmes !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. window.history.go et le rechargement
    Par la-ilaha-ila-allah dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 06/12/2013, 11h41
  2. window.history.back() et IE versus FF
    Par mac7474 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/12/2009, 12h06
  3. window.history.forward() ne fonctionne pas sous FF
    Par khokho dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/01/2007, 18h01
  4. [JSP] page précédente avec window.history.go(-1)
    Par marti dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/06/2006, 15h05
  5. history.back() et window.back(), IE et FF
    Par toome dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 04/11/2005, 14h49

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