begin process at 2012 02 14 09:52:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Fonctionnement d'une propriété d'un navigateur

 > 

Evénement sur 'window.location.hash' modifié ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Evénement sur 'window.location.hash' modifié ?

lundi 18 mai 2009 à 10:32:47 | Evénement sur 'window.location.hash' modifié ?

billou_13

Membre Club
Bonjour à tous,

Je poste cette question ici car je n'arrive pas à trouver mon bonheur sur le net.
J'aurais voulu savoir s'il est possible d'exécuter du code javascript à la modification de l'ancrage dans l'url ?
Et si possible, sans mettre en place un timer qui analyse l'url toutes les x secondes.

Mon but consiste à produire le même comportement que gmail lorsque l'on ouvre des mails ou libellés. C'est à dire un changement d'url avec AJAX sans obliger le rechargement de toute la page.

Merci par avance,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
lundi 18 mai 2009 à 11:26:57 | Re : Evénement sur 'window.location.hash' modifié ?

Bul3

Membre Club


Bonjour,

oulah....

si on change l'url, on change de page
il ne sert donc à rien de scruter l'url
       il faut mettre du javascript dans toutes les pages affcihées
       et si ces pages ne sont pas sur ton site, ne t'appartiennent,
           ça va pas être simple !
>>C'est à dire un changement d'url avec AJAX
ajax, ne change pas l'URL ! c'est l'appel d'un script sur le serveur

Cordialement [mon Site] [M'écrire] Bul
lundi 18 mai 2009 à 11:52:50 | Re : Evénement sur 'window.location.hash' modifié ?

billou_13

Membre Club
Bonjour,

Merci pour ta réponse mais je ne parle pas de changement d'url, je parle de changement de l'ancrage (ce qui est après le dièse #).
Et dans ce cas: oui, on change d'url (dans la mesure où l'on admet que l'ancrage appartient à l'url); et non, on ne change pas de page => donc, pas de rechargement.

Pour être plus précis:
J'ai une page du style: http://localhost/documents.html#page=1
Et je veux passer à : http://localhost/documents.html#page=2

Ainsi, en AJAX, je peux:
1) charger la nouvelle page (de la liste des documents).
2) changer l'url sans rechargement dans la page par le navigateur. (donc possibilité de sauvegarde du lien: favoris, envoi par mail...)

Et mon test (sur lequel je travaille en ce moment) le prouve:
Si tu es sur la page "documents.html#page=1" et que tu as un lien hypertexte de la forme:
<a href="documents.html#page=2" onclick="javascript:ChangePage(2)">Page 2</a>
Cela fonctionne parfaitement et comme je le souhaite... ie, pas de rechargement de page mais chargement de la nouvelle liste de documents et changement d'url.

Je me demandais simplement s'il était possible de zapper l'événement onclick et de charger implicitement la nouvelle page lorsque l'on change l'ancrage.
Alors, je te l'accorde ceci est du détournement de fonctionnalité car l'ancrage ne sert pas à cela d'habitude. Mais, c'est un technique permettant de ne pas demander de recharger une page tout en ayant une url différente (donc possibilité d'ajout aux favoris).
Et gmail fonctionne exactement comme cela !

Voila tout,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
lundi 18 mai 2009 à 12:14:53 | Re : Evénement sur 'window.location.hash' modifié ?

Bul3

Membre Club
>>je parle de changement de l'ancrage (ce qui est après le dièse #).
ah !!  je n'avais pas percuté !
alors oui, si c'est la même page, pas de rechargement.

>><a href="documents.html#page=2" onclick="javascript:ChangePage(2)">Page 2</a>
que fait donc ChangePage(2) ?
>>Je me demandais simplement s'il était possible de zapper l'événement onclick
>>et de charger implicitement la nouvelle page lorsque l'on change l'ancrage
navré... je n'ai pas suivi.

lundi 18 mai 2009 à 13:46:38 | Re : Evénement sur 'window.location.hash' modifié ?

billou_13

Membre Club
Re,

Merci à toi pour ce retour.

1) Concernant la méthode "ChangePage(2)", elle exécute uniquement le process d'appel (en AJAX) de chargement de la page 2. Cette action appelle un traitement serveur qui lui retourne du code HTML qui est mis dans un div.
Résultat: au clic sur le lien:
a) l'url change
b) la liste des documents de la page 2 est chargée (en AJAX).
Et cela marche parfaitement comme ceci !


Mais, étant très pointilleux, je me posais la question suivante:
2) Peut-on éviter l'écriture de l'attribut onclick.
C'est à dire que l'on fait un lien hypertexte:
<a href="documents.html#page=2">Page 2</a>
Et que l'on a une méthode dans notre code javascript (qui s'exécute implicitement lorsque l'on change l'ancrage).
//This function is implicitly called when window.location.hash changed !
function OnHashChanged()
{
   var hash = window.location.hash;
   //Récupération du numéro de la page à charger

   var result = ChangePage(numPage);//Appel AJAX

   $('#mainDiv').html(result);//jQuery
}

Peut-on brancher cette méthode à l'événement "ancrage modifié" ?


Merci,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
lundi 18 mai 2009 à 13:58:55 | Re : Evénement sur 'window.location.hash' modifié ?

Bul3

Membre Club
>>a) l'url change
>>b) la liste des documents de la page 2 est chargée (en AJAX).
>>Et cela marche parfaitement comme ceci !
certes...tu veux que je te dise ?.... tu te compliques la vie.

lundi 18 mai 2009 à 14:22:07 | Re : Evénement sur 'window.location.hash' modifié ?

billou_13

Membre Club
lol, je savais que tu dirais ça ^^
Mais en fait, ma question, comme je te l'ai dit est pointilleuse mais elle n'est pas sans sens.

En fait, il existe 1 cas (qui n'arrivera pas tous les jours, je te l'accorde) où cela a un intérêt:
Si l'utilisateur change l'ancrage à la main dans la barre d'url et cliques sur entrée, l'ancrage va bien changer dans l'url mais la page ne sera pas chargée car le code javascript de ChangePage(..) ne sera pas exécuté.
Alors que dans gmail, cela marche (il me semble).

Voila pourquoi je veux être pointilleux :-p

Merci encore,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
lundi 18 mai 2009 à 14:31:45 | Re : Evénement sur 'window.location.hash' modifié ?

Bul3

Membre Club
sauf que gmail ne fait sûrement pas de la manière dont tu veux le faire...

lundi 18 mai 2009 à 14:36:47 | Re : Evénement sur 'window.location.hash' modifié ?

billou_13

Membre Club
Surement, c'est pourquoi j'aimerais savoir comme ils font... :)
Ou que l'on me donne une manière qui comble mon besoin fonctionnel ^^

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
lundi 18 mai 2009 à 15:10:55 | Re : Evénement sur 'window.location.hash' modifié ?

Bul3

Membre Club
>>qui comble mon besoin fonctionnel
parfaitement d'accord.
"il suffit" sûrement que tu nous l'exprimes,
pas en javascript/html mais fonctionnellement,
pas une solution possible mais le but.
enfin... pour moi, qui suis dur à la comprenette,
incapable de résoudre/de faire ( quel handicap ! ) sans piger.


1 2

Cette discussion est classée dans : url, window, location, hash, evénement


Répondre à ce message

Sujets en rapport avec ce message

include fichier distant [ par malik7934 ] Hello, Je suis une pine en JavaScript et là, je sèche.... J'ai un fichier sur un site (url1) et j'aimerais l'appeler depuis un autre site (url2). E window.location.search [ par tets88 ] Bonjour, J'ai un problème qui me dépasse au niveau compréhension. Je vous explique en quelques mots le principe. J'ai un javascript qui rajoute un pa Change de l'image au survole de la souris [ par mamsk00 ] Bonjour, [code=js] function lien(id) { if (id=="1"){window.location="#1"} if (id=="2"){window.location="#2"} if (id=="3"){window.location="#3" ajouter une variable dans une url [ par novato ] bonjour, Quelqu'un aurait une idée du code à utiliser pour faire que si une page php a une url sans variable, elle se recharge automatiquement avec un probleme de hash.location avec suivant precedant du navigateur [ par dpk1 ] bonjour a tous, je suis débutant et je ne comprend pas une fonction. j'ai besoin de vos lumières afin d'améliorer mon site. voila j'ai : hashencours Question window.location.reload (Je suis "noob") [ par limoges30 ] Bonjour tout le monde, je suis un nouveau sur ce site, donc soyez un peu indulgent S.V.P :( Je suis plutôt débutant et je fais des tests pour m'améli Récupération de l'URL d'une frame [ par Migs ] Voilà j'ai un gros problème et j'ai eu beau chercher partout, je n'ai rien trouvé qui fonctionne:Voici les scripts que j'ai essayé, mainFrame étant la adapter une source pour la rendre moin compliquer ? [ par frvfrvfrvfrv ] Salut à vous tous,j'ai eu cette source ici,elle sert à afficher une page en fonction du jour de la semaine.(lundi mardi,etc): <FONT face="Courier New" Probleme avec window.open [ par secman ] Bonjour,je voudrai faire saisir dans un champ un texte et lorsque j'appuie sur mon bouton j'ouvre plusieurs nouvelles fenetres avec comme adresse une window.location et firefox [ par 8livier ] bonjour,un petit probleme avec firefox....window.location=formulaire.commune.options[formulaire.commune.selectedIndex].value;ne fonctionne pas....Que


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales