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 :

Retour arrière => Refresh


Sujet :

JavaScript

  1. #21
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Pourtant ouvre une console web et entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.location.hash="#hello";
    Tu verras bien que l'URL change

  2. #22
    Invité
    Invité(e)
    Par défaut
    Compris !
    C'est le lien <a href="..."> qui actualise la page.

    Il suffit de mettre à la place :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <span id="User_CentricBt" onclick="expand('User_Centric');"></span>
    Avec :
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function expand(id, expanded){
      var Item = document.getElementById(id); 
      if(expanded=== undefined){
        expanded = (Item.offsetWidth == 0); //toggle expanded state
      }
     
      Item.style.display = expanded ? "block" : "none"; 
      window.location.hash = expanded ? "#expanded" : "";
      // BONUS : modification du texte du <span>
      document.getElementById(id+'Bt').innerHTML = expanded ? "Fermer" : "Ouvrir";
     
    }
    function init() {
        expand("User_Centric", window.location.hash==="#expanded");
    }

  3. #23
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    2/ et 3/ Le code est assez simple et les notation suffisamment explicites, je pense.
    Le point 3, OK, mais le point 2, vois toujours pas...

    Pour le point 1, j'avais bien vu que l'id est devenue "User_CentricBt", mais pourquoi on garde pas "User_Centric" ?

    Enfin, pourrais-tu me décoder cette fonction (c'est le 2e paramètre que je comprends pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function init() {
        expand("User_Centric", window.location.hash==="#expanded");
    }

  4. #24
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Le deuxième paramètre est une condition interprétée en booléen. Si le hash est à expanded, la fonction sera appelé avec comme second argument "true", autrement dit va forcer le dépliement du menu. Inversement, si le hash n'est pas égal à expanded, la variable expanded prendra la valeur "false" et le menu sera replié.

    Je t'ai proposé ce prototype car il ressemble beaucoup à la fonction toggle de jQuery, et je le trouve plutôt intuitif (il faut croire que non )

  5. #25
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Merci pour l'explication ; ça serait intuitif si je connaissais mieux le html ; ce qui me gênait, c'était qu'il y ait 3 égals, mais si on n'en met que 2, ça marche quand même (et je comprends !) ; pourquoi ?

    Et autre question qui est liée : le point 2 :
    ds le onclick, à la fonction expand, tu passes un seul paramètre ; j'en déduis que dans la fonction, la variable "expanded" est à "undefined", donc je la remplace par (Item.offsetWidth == 0) , et ça ne marche plus non plus (panique totale)

  6. #26
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Pour l'opérateur ===, je pense que Google a la réponse.
    Et par principe je ne réponds jamais à une question "ça ne marche pas"

  7. #27
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Pour l'opérateur ===, je pense que Google a la réponse
    J'y avais pensé aussi, mais pas trouvé...

    Et par principe je ne réponds jamais à une question "ça ne marche pas"
    Normal...sauf que comme je dis "panique totale", c'est indescriptible. Alors je pose une autre question : pourquoi ça marche (ça me semble pas intuitif...) ?

  8. #28
    Invité
    Invité(e)
    Par défaut
    Il faudrait peut-être faire un effort... pour trouver les mots justes :
    => Opérateurs de comparaison (PHP)
    => Opérateurs de comparaison (JavaScript)

  9. #29
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    OK, merci et je comprends bien pourquoi le == marche aussi !

    Reste plus que le point 2 : pourquoi ça marche ?

  10. #30
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 232
    Par défaut
    Reste plus que le point 2 : pourquoi ça marche ?
    il va te falloir également voir les bases du javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function expand(id, expanded){
      var Item = document.getElementById(id); 
      // si 2éme paramètre omis => il vaut donc undefined
      if(expanded=== undefined){
        // dans ce cas on l'initialise suivant la valeur de la largeur de l'élément
        expanded= (Item.offsetWidth == 0);
        //expanded = TRUE si la largeur vaut 0 sinon vaut FALSE
      }
      // affiche l'élément si expanded vaut 0 
      Item.style.display= expanded ? "block" : "none"; 
      // modification du hash selon le même principe
      window.location.hash= expanded ? "expanded" : "";
    }

  11. #31
    Invité
    Invité(e)
    Par défaut
    C'est aussi la LOGIQUE qu'il faut comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.location.hash==="#expanded"
    cette expression vaut :
    • true si on a "#expanded" dans l'URL
    • Sinon, elle vaut false

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function init() {
        expand("User_Centric", window.location.hash==="#expanded");
    }
    init() va donc, comme son nom l'indique, initialiser la page en fonction de cette valeur true/false.
    Citation Envoyé par laurentSc Voir le message
    ..., j'avais bien vu que l'id est devenue "User_CentricBt", mais pourquoi on garde pas "User_Centric" ?
    Là, tu me fais de la peine...
    <span id="User_CentricBt"></span>
    <div id="User_Centric">...
    document.getElementById(id) => c'est le <div>
    document.getElementById(id+'Bt') => c'est le <span>

  12. #32
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Désolé de te faire de la peine (j'avoue que j'avais pas vu) et je prends un risque énorme en risquant d'empirer les choses : suite à tes commentaires de 19h12, je me suis dit qu'on pouvait remplacer le code de la fonction expand par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function expand(id, expanded){
      var Item = document.getElementById(id); 
     /* if(expanded=== undefined){
        expanded = (Item.offsetWidth == 0) ; //toggle expanded state
      }*/
     
      Item.style.display =  (Item.offsetWidth == 0) ? "block" : "none"; 
    //  window.location.hash = expanded ? "#expanded" : ""; // (cette instruction ne fonctionne pas pour moi...)
      // modification du href et texte du lien
      document.getElementById(id+'Bt').href =   (Item.offsetWidth == 0) ? "#expanded" : "#";
      document.getElementById(id+'Bt').innerHTML =  (Item.offsetWidth == 0) ? "Close" : "Open";
    }
    et bien non car du coup, le hash n'est plus positionné (malgré la ligne 10) et je ne comprends...

  13. #33
    Invité
    Invité(e)
    Par défaut


    L'informatique, ce n'est pas "jeter des bouts de code en l'air, et recopier comme ça retombe".
    Si on l'écrit comme ça, c'est plus clair ?
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function expand(id, OuiNon){
      var Item = document.getElementById(id); 
      // si 2éme paramètre omis => il vaut donc undefined
      if(OuiNon=== undefined){
        // dans ce cas on l'initialise suivant la valeur de la largeur de l'élément
        OuiNon= (Item.offsetWidth == 0);
        //OuiNon = TRUE si la largeur vaut 0 sinon vaut FALSE
      }
      // affiche l'élément si OuiNon vaut 1
      if(OuiNon){ // OuiNon == true
        Item.style.display = "block"; 
      } else { // OuiNon == false
        Item.style.display = "none"; 
      }
      // modification du hash selon le même principe
      if(OuiNon){ // OuiNon == true
        window.location.hash = "#expanded";
      } else { // OuiNon == false
        window.location.hash = "";
      }
    }
    Dernière modification par Invité ; 03/09/2013 à 21h31.

  14. #34
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Tu te méprends car j'avais bien compris ton code (dès l'explication de 19h12) par contre je ne comprends toujours pas pourquoi mon code de 19h54 ne marche pas...

  15. #35
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Où est-ce que le hash est lu dans ton code ? Nulle part ? Alors aucune chance que ça fonctionne...

    On t'a proposé une solution qui fonctionne avec le code commenté, ça devrait te suffire.

  16. #36
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 495
    Billets dans le blog
    1
    Par défaut
    Bien sûr que ça me suffit ; je cherchais juste à bien le comprendre (d'où la raison de mon essai (je ne vais pas l'utiliser, mais c'est juste pour comprendre)) ; et dans ce code, où le hash est-il lu ?

  17. #37
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    et dans ce code, où le hash est-il lu ?
    Il me semblait pourtant qu'on te l'avait expliqué de trois façons différentes quelques posts plus haut...

    C'est aussi la LOGIQUE qu'il faut comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.location.hash==="#expanded"
    cette expression vaut :
    true si on a "#expanded" dans l'URL
    Sinon, elle vaut false
    Ce n'est pourtant pas sorcier, je ne vois pas comment on peut être plus clair

  18. #38
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 232
    Par défaut
    Citation Envoyé par SylvainPV
    ...je ne vois pas comment on peut être plus clair
    ...je ne vois pas comment on peut être plus clair
    ...je ne vois pas comment on peut être plus clair
    ...je ne vois pas comment on peut être plus clair

  19. #39
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    Citation Envoyé par SylvainPV Voir le message
    Ce n'est pourtant pas sorcier

  20. #40
    Invité
    Invité(e)
    Par défaut
    On smoke de ki ici ?
    T'a kaamo-qué ki ?
    S'il vin est pas bon, savo 1 PV !
    Sacé de Laurent bar !


+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Detecter activation JS / Bloquer retour arrière
    Par PedroBD dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/08/2006, 18h59
  2. [WORD] Touche Retour Arrière ne supprime plus
    Par tux2005 dans le forum Word
    Réponses: 6
    Dernier message: 28/07/2006, 12h06
  3. retour arrière (undo)
    Par pierrot67 dans le forum Bases de données
    Réponses: 5
    Dernier message: 16/06/2006, 16h27
  4. Retour arrière sur une iframe
    Par Bicnic dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/05/2006, 17h34
  5. Retour arrière (back) + reset des formulaires
    Par Bicnic dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 03/04/2006, 10h43

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