begin process at 2010 03 18 20:56:50
  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 Javascript pop up windows resize availheight [ par waso ] Pourquoi ca ca marchefunction OpenSWindow(url){var platform;var browser;var version;version = parseInt(naviga Comment mettre un if dans un if... [ par waso ] et pourquoi ca ca marche pasif (aw > 810) { if (browser == 'IE') { var fenetre=window.open(url,"Fullscreen","fullscreen=0,toolbar=0,location=0,direc window.print() Supprimer l'URL dans la page imprimée [ par atract ] Choubiroute J'utilise onclick="window.print()" pour imprimer ma page. Quand la page s'imprime, je retrouve l'URL imprimée en pied de page. Est ce que window.location probleme [ par amosc ] amosJ ai un petit probleme j ai une fonction en JS du stylefunction truc(){.....window.location="commd.php?..."..;}sur un lien <a href=javas window.location [ par Bud ] Bonjour! J'ai le code ci-dessous pour changer régulièrement une image Ca marche nickel sauf quand j'essaye d'accéder à la page qui est sur mon site s window.open avec des variables : J'y arrive pas ! [ par Samiby ] Voici mon code:function download(dir, filename) { var url="http://www.monsite.ext/download.php?c=" + dir + "f=" + filename; window.open(url,'Télécharg Problème avec window.location.replace sous firefox [ par wadpap13 ] Bonjour à tous !!J'ai un petit soucis sur Firef 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 adresse location [ par MiTcH37 ] bijour, j'ai quelques pb avec certain navigateur (!) qui ne reconnaissent pas le parent.NOMDELAFRAME.location !si qqun avais une autre synthaxe qui fo


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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,749 sec (4)

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