OVH Cloud OVH Cloud

Ancre et Paramètre ?

25 réponses
Avatar
ByB
Bonjour,

J'ai créé une page HTML qui, grace à du Javascript, se comporte
différemment selon le paramètre qui lui est passé :


mapage.htm?1 ==> Les messages sont en français
mapage.htm?2 ==> Les messages sont en anglais

Je voudrais de plus, dans un certain cas, amener le visiteur du site
sur un point particulier de la page, grace à une ancre :

mapage.htm#MonAncre

Mais je n'arrive pas à combiner les deux, c'est à dire à utiliser
l'ancre, tout en passant le paramètre pour choisir la langue
d'affichage de la page.

C'est sans doute un problème simple de syntaxe, mais je n'ai pas réussi
à le résoudre. Merci de vos conseils ...



--
La révolution informatique fait gagner un temps fou aux hommes, mais
ils le passent avec leur ordinateur ! [Khalil Assala]

5 réponses

1 2 3
Avatar
YD

Neanmoins la question "à quoi sert de récupérer ce '?' " demeure


AMHA, il s'agit ici d'accès à la décomposition de l'URL que fait
le navigateur pour ses besoins (internes sans doute). Il ne s'agit pas
de JavaScript mais de DOM. Le premier navigateur scriptable a proposé
l'accès à la propriété search de location avec le ? et cet usage s'est
forcément imposé et perpétué...

Tu noteras que, de même, location.hash contient le # ! Il y a tout de
même une logique ;-)

--
Y.D.

Avatar
Olivier Miakinen

à ce propos, je profite du présent pour demander à Patrick Meyzeck
qu'il veuille bien m'excuser :
j'ai relu mon intervention et au "pourquoi du '?' "
je pense m'être assez mal exprimé.

Neanmoins la question "à quoi sert de récupérer ce '?' " demeure


Sans aller chercher dans des docs, je suppose que c'est pour pouvoir
distinguer l'url « http://truc.com/? » de l'url « http://truc.com/ »,
sachant que ce n'est pas à JavaScript de décider si ces deux url doivent
ou non être traitées de la même manière. Mais je te propose maintenant
de chercher par toi-même la confirmation ou l'infirmation de mon hypothèse.

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
Olivier Miakinen

Vous citez ci :
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
query = *( pchar / "/" / "?" )
Ce qui veut dire qu'à priori on peut avoir d'autres "?" dans la chaine
de search ? (puisqu'ici / marque l'alternative)
Est-ce juste autorisé mais banalisé, car seul le premier marque la
délimitation, ou est-ce que cela a une utilité particulière de séparation ?


À ma connaissance, c'est banalisé.

D'ailleurs ceci fonctionne comme prévu :
http://www.google.fr/search?q=?+!

de même que cela pour le signe = :
http://www.google.fr/search?q=?+!&meta=lr=lang_fr

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
O.L.
Olivier Miakinen avait écrit le 13/01/2006 :

Vous citez ci :
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
query = *( pchar / "/" / "?" )
Ce qui veut dire qu'à priori on peut avoir d'autres "?" dans la chaine
de search ? (puisqu'ici / marque l'alternative)
Est-ce juste autorisé mais banalisé, car seul le premier marque la
délimitation, ou est-ce que cela a une utilité particulière de séparation ?


À ma connaissance, c'est banalisé.

D'ailleurs ceci fonctionne comme prévu :
http://www.google.fr/search?q=?+!

de même que cela pour le signe = :
http://www.google.fr/search?q=?+!&meta=lr=lang_fr


C'est pas propre, AMHA.

Si je tape "?" (sans les guillemets) dans ma barre d'outil Google
préférée, l'adresse à laquelle j'arrive est du type :
[blabla] &q=%3F
On voit donc que le point d'interrogation est remplacé automatiquement
par son équivalent, ce qui rend tout cela bien plus propre
(champ=valeur&champ=valeur), il n'y a plus d'ambiguité possible.

Même chose si je tape "=", ça ne reste pas tel quel dans l'URL.

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net


Avatar
Patrick Mevzek
Si je tape "?" (sans les guillemets) dans ma barre d'outil Google
préférée, l'adresse à laquelle j'arrive est du type :
[blabla] &q=%3F


C'est possible, puisque dans le contexte URL/HTML on peut toujours
remplacer un caractère (sauf l'espace qui est un peu particulier parfois)
par %XX où XX est le code hexadécimal du caractère en question.
Et ici, probablement pour être sûr que le ? supplémentaire est bien
égal à la valeur de la clef q, et n'est pas, par exemple un autre
séparateur (imaginons: ?a=1?b=2 )

C'est clair que ca simplifie les choses, et on se demande pourquoi la
norme prévoit autrement, mais bon cette dernière n'est pas toute jeune.

Là où ca se corse grandement, c'est quand on parle de valeur
hexadécimale d'un caractère, encore faut-il savoir dans quel jeu de
caractère on est !
Initialement, plutôt US-ASCII, puis, pour le HTML/HTTP/URL, iso-latin-1
Mais bon ce fut un mauvais choix par défaut (unicode n'était pas encore
autant représenté qu'aujourd'hui). Bon pour les 128 premiers caractères
ASCII, ce n'est pas bien grave, vu qu'ils ont le même codage en ASCII,
ISOLATIN1 et UTF8.

Donc la dernière déclinaison de la norme, les IRI remplacent les URL
(cf RFC3987).
Ce qui nous intéresse ne change pas :
IRI = scheme ":" ihier-part [ "?" iquery ]
[ "#" ifragment ]

iquery = *( ipchar / iprivate / "/" / "?" )


Quant au codage des caractères, en gros, on prend leur codepoint Unicode,
on calcule la suite d'octets via UTF-8, et on spécifie chaque octet sous
la forme %XX.



--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>

1 2 3