11548 sujets

JavaScript, DOM et API Web HTML5

Pages :
Salut à tous,

je bloque sur un petit truc, mais je ne suis pas certain qu'il existe de solution.

Je cherche à capter l'évenement de modification d'URL mais spécifiquement modification de l'ancre.

Typiquement, on modifie à la main l'URL :
monsite.truc/page.html#ancre1 -> monsite.truc/page.html#ancre2
On appuie avec son gros doigt sur la touche entrée, et voilà, je n'arrive pas à capter cette modification Smiley ohwell

(En modifiant autre chose que l'ancre, la page est rechargée et on peut utiliser onload donc aucun soucis, mais là non)

Voilà, si vous avez la soluce (ou si vous savez que ce n'est pas possible) je prend Smiley lol
++
Modifié par Olivier (24 Jan 2006 - 21:27)
Cedric a écrit :
Idée idiote : il y a moyen de capter un scroll ?


Aucune idée...

Tiens, après un coup de google :
http://www.quirksmode.org/js/events_compinfo.html

a écrit :

window.onscroll = doSomething;

* Mozilla only fires the event when the user uses the scrollbar. Since you cannot be certain to capture a scroll event, I judge its support Minimal, not Incomplete.


Mais quel rapport avec mon truc ? ! Smiley langue
T'as essayer de créer un écouteur qui capture les actions clavier et dès que la touche entrée est enfonçée tu vérifies si ton anchor a changé auquel cas tu deplace la scroll... ?

T'auras peut-etre un problème de focus je sais pas...
onscroll n'est fait que pour détecter l'utilisation d'une barre de défilement, mais ne fonctionne pas si la page est scrollée d'une autre manière... donc la solution n'est pas là.

Quel est le but de ton script ?
QuentinC a écrit :
onscroll n'est fait que pour détecter l'utilisation d'une barre de défilement, mais ne fonctionne pas si la page est scrollée d'une autre manière... donc la solution n'est pas là.

Quel est le but de ton script ?


Wouuu stop polluting Smiley lol lol Smiley smile
Ouvre un autre topic Cédric sauf si c'est lié à celui-ci, c'est mieux pour les archives Smiley cligne

@ noklio, j'y avais songé, mais je trouvais ça brutal !
S'il n'y a pas d'autre solution, je tenterais le coup.
Bah si tu as constater qu'en tapant entrée ca recharge pas le js tu n'as aucune autre solution qu'un écouteur... J'ai regardé rapidement dans la doc mais j'ai pas trouvé d'écouteur pour les anchors.
Capter les évènements clavier dans la barre d'adresse, je crains fort que ce soit possible : la barre d'adresse est un composant du navigateur, pas de la page.

Je suppose qu'onunload n'irait pas non plus ?
QuentinC a écrit :
Capter les évènements clavier dans la barre d'adresse, je crains fort que ce soit possible : la barre d'adresse est un composant du navigateur, pas de la page.

Je suppose qu'onunload n'irait pas non plus ?


Non, pas de déchargement de page non plus Smiley ohwell

Tu penses qu'on peut pas gérer l'appuie sur une touche hors du cadre de la page ? Hmm, dommage ça :s

Ca m'a l'air bien mort mon histoire Smiley lol
Olivier a écrit :
Tu penses qu'on peut pas gérer l'appuie sur une touche hors du cadre de la page ? Hmm, dommage ça :s


noklio a écrit :
T'auras peut-etre un problème de focus je sais pas...


C'est en effet un soucis que tu peux rencontrer.

Sinon encore plus barbare tu peux créer une boucle qui checke indefiniment l'url du navigateur, mais alors là faut peut-etre s'attendre à des ralentissements sur de vieux navigateurs...
noklio a écrit :




C'est en effet un soucis que tu peux rencontrer.

Sinon encore plus barbare tu peux créer une boucle qui checke indefiniment l'url du navigateur, mais alors là faut peut-etre s'attendre à des ralentissements sur de vieux navigateurs...


Oui, pensé aussi mais hors de question !!! Smiley smile
En fait, ça affiche/masque des parties de la page en fonction de l'id demandé, la demande s'effectuant via l'URL et plus particulierement l'ancre.

Sans JS, ça permet d'avoir une navigation pratique. (c'est encore au stade de test)
http://cv.olivier-patry.net/essai.html

Si tu click sur un des liens, ça fonctionne, si tu entres une page directement avec une ancre, ça marche (suppose actualisation de la page), mais si tu modifies, comme je le décrivais dans le post initial, l'ancre, ça ne marche pas.

Je ne vois pas comment on pourrait faire autrement, mais si t'as une idée Smiley cligne
noklio a écrit :
hmm...

Avec un url rewriting tu pourrais le faire.

> http://cv.olivier-patry.net/loisirs

Tu rediriges vers ton fichier essai.html avec ton js qui récupère le nom et hop emballé c'est pesé puisque ca rechargera la page au changement d'url.


Ahh oui, c'est une idée ça, mais je trouve ça lourd d'implémentation par contre Smiley ohwell enfin, ça va c'est juste un fichier htaccess mais bon...

Disons qu'en gerant ça juste côté client ,ça m'arrangerais Smiley lol

Je pense à un truc là.
Ca serait pas possible de gérer l'affichage par rapport au focus ?
Changer d'ancre déplace le focus là où ça va bien, donc onfocus = function() { display }; onblur = fuction() { hide };

no ?
Ca vous parait jouable ? (pas trop le temps de tester en ce moment, je testerais demain)
Olivier a écrit :


Ahh oui, c'est une idée ça, mais je trouve ça lourd d'implémentation par contre Smiley ohwell enfin, ça va c'est juste un fichier htaccess mais bon...


Si tu ne réécris pas les js, css et image ce n'est pas lourd Smiley smile

Olivier a écrit :
Disons qu'en gerant ça juste côté client ,ça m'arrangerais Smiley lol

J'imagine bien...

Olivier a écrit :

Je pense à un truc là.
Ca serait pas possible de gérer l'affichage par rapport au focus ?
Changer d'ancre déplace le focus là où ça va bien, donc onfocus = function() { display }; onblur = fuction() { hide };


Jvois pas ce que ça change pour les ancres...
noklio a écrit :

Jvois pas ce que ça change pour les ancres...


Eh bien a priori (c'est comme ça que je le vois), étant donné que le changement d'ancre (même sans reload ou autre) change le focus et le déplace sur l'élément pointé, on a moyen de contrôler le changement d'ancre dans l'URL avec monId_Elt.onfocus
Mwwouuahahrrfff Smiley biggol Smiley decu

Raté, ça ne fonctionne pas...

Le pointage sur une ancre ne donne pas le focus à cet élément, du moins, il ne réagit pas à "elt.onfocus" :s
onfocus, c'est le même problème qu'onchange ou onscroll : il n'est déclenché que si l'élément est atteint via la touche tab...
Pages :