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 :

Evenement Javascript genre document.location.onchange


Sujet :

JavaScript

  1. #1
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut Evenement Javascript genre document.location.onchange
    Bonjour,

    J'ai un url dans ma page qui a une ancre, par exemple:

    http://www.monsite.com/page1.html#toto

    connaissez-vous un moyen pour détecter le changement du nom de l'ancre
    en javascript lorsque le changement est effectué manuellement par l'utilisateur
    dans la barre d'adresse, par exemple, l'utilisateur écrit toto2 et fait Enter.

  2. #2
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    En observant périodiquement window.location ou une pression sur la touche entrée, mais pas sur que ca soit suffisant...

  3. #3
    Membre expérimenté
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Points : 1 595
    Points
    1 595
    Par défaut
    Bonjour,
    Tu peux peut être utiliser :
    window.location.hash

    Description
    Contient le nom de l'éventuelle ancre de l'url.
    Si l'url vaut index.html#top, hash vaut #top

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Merci pour vos réponses.

    @jumano

    ma question ne porte pas sur "comment extraire l'ancre"

    @DoubleU

    le keypress ou keydown ne sont pas levés quand on est en train
    d'écrire dans la barre d'adresse.

    Quant au timer c'est un moyen de savoir que l'url change mais cela
    ne me permet pas de savoir quand l'utilisateur le valide (par enter)
    Donc je ne peux pas utiliser ça malheureusement. Car j'observerai
    des valeurs d'ancre qui n'ont pas toujours un sens (pendant qu'il les
    introduit par exemple)

  5. #5
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    onscroll ?

  6. #6
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Pour le coup des keypress, c'est vrai que l'url est pas dans le body, j'avais pas pensé xD

    Et pour le timer, j'étais pas convaincu non plus que ca soit efficace, d'autant qu'outre la touche "enter" faudrait trouver aussi la pression sur le bouton qui affiche la page... mais ca pouvait être un point de départ, si d'autres avaient eu des idées (même si je suis assez dubitatif sur la possibilité de faire le truc)

  7. #7
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    @Matthieu2000

    Merci pour cette idée nouvelle, mais il s'agit d'une ancre qui n'existe pas
    dans la page.

    A noter qu'il y a quelques cas ou ça ne scrollera pas, par exemple deux ancres
    proches en bas de page.

    @DoubleU

    Je me demandait si il y avait moyen de faire avec le focus, c'est peut-être une
    piste. Quand on tappe enter dans la barre d'adresse elle perd le focus, savez
    vous qui le reçoit ?

    Cela pourrait être l'instant ou je peux faire la comparaison avec une vieille
    valeur de document.location.href pour tester un changement après validation
    par enter. (comme pour ton idée du timer en fait)

  8. #8
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Je suis pas sur qu'on puisse intercepter des évènements ailleurs que sur le body de la page, et l'url du navigateur n'est justement pas dans le body, donc le focus c'est comme le keypress a mon avis, c'est rapé ^^

  9. #9
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Bon, voilà une idée basée sur le focus de window,
    il semblerait qu'après un Enter dans la barre d'adresse
    cet évenement soit levé.

    Je suis pas sur que cette solution soit très crossbrowser,
    si vous voulez tester il vous faut donc modifier l'ancre dans
    votre page de test (ou la créer)

    Voici le code, merci pour votre retour.

    Code : 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
    22
    23
    24
    25
    26
    27
    28
    29
     
    <script type="text/javascript">
     
    function addEvent(e, evType, fn) {
      if(e.addEventListener) {
        e.addEventListener(evType, fn, false); // sans capture
        return true;
      } else if (e.attachEvent) {
        var r = e.attachEvent("on"+evType, fn);
        return r;
      } else { return false; }
    }
     
    // ajoute un oberveur pour document.location.onchange
    document.location.oldhref = document.location.href;
    addEvent(window, 'focus', function() {
      if(document.location.oldhref != document.location.href) {
    	document.location.oldhref = document.location.href;
    	if(document.location.onchange) document.location.onchange();
      }
    });
     
     
     
    document.location.onchange = function() {
      alert(document.location.href);
    };
     
    </script>

Discussions similaires

  1. mise à jour de l'objet javascript : document.location.hostname
    Par DarkPoster14 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/06/2012, 10h37
  2. Javascript document.location et identifiant
    Par guigui086 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/02/2009, 13h29
  3. [POO] php-javascript : déclaration des arguments pour document.location.href
    Par littleshark dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/09/2008, 10h00
  4. commande javascript document.location
    Par le novice2 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/08/2008, 15h53
  5. Evenement Javascript onchange + melanger deux evenement
    Par Decap dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/01/2008, 09h13

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