gratifiant > comp.divers.* > comp.infosystemes.www.navigateurs

Dominique Ottello (29/11/2006, 19h20)
Bonjour,

Je viens juste de m'apercevoir que des liens écrits pour aller en haut
de page : <a href='#'>Haut</a> fonctionnent bien avec Firefox, IE6 et
IE7, mais pas avec Opera 9.02.

Est-ce une « fonctionnalité » ou un défaut d'Opera ?
Le Fou (29/11/2006, 21h02)
Dominique Ottello a écrit :
> Bonjour,
> Je viens juste de m'apercevoir que des liens écrits pour aller en haut
> de page : <a href='#'>Haut</a> fonctionnent bien avec Firefox, IE6 et
> IE7, mais pas avec Opera 9.02.
> Est-ce une « fonctionnalité » ou un défaut d'Opera ?


Parceque le "#" doit être suivi d'un nom donné à une ancre.
Comme dans ton cas il n'y a rien derrière le "#", Opéra ne réagit pas.
<a href='#'>Haut</a> n'a jamais été un "lien pour aller en haut", il se
trouve que certains navigateurs réagissent comme ça mais ça n'est pas prévu
pour à l'origine.
rm (29/11/2006, 21h50)
Le mercredi 29 novembre 2006 à 18:20, Dominique Ottello a écrit :

> Bonjour,


Salut Dominique,

> Je viens juste de m'apercevoir que des liens écrits pour aller en haut
> de page : <a href='#'>Haut</a> fonctionnent bien avec Firefox, IE6 et
> IE7, mais pas avec Opera 9.02.
> Est-ce une « fonctionnalité » ou un défaut d'Opera ?


Aucune idée... Opera ne supporte plus ça depuis les versions 6...
C'est soit une vieille régression pas bien soignée, soit un respect trop
strict de la norme ?

n'indique pas clairement que le nom ou l'identifiant d'une ancre pourrait
être omis...
Mais je ne suis pas spécialiste de tout ce charabia et j'ai probablement
loupé quelque chose :-D
Note qu'Amaya, du W3C, ne remonte pas non plus en heut de ta page...

Faudrait demander sur opera.general et/ou
fr.comp.infosystemes....

En tout cas, les pages "suivantes" passent bien avec la fonctionnalité
d'avance rapide d'Opera, ça n'a rien à voir avec une déviance de la norme,
mais c'est bien pratique pour lire ton excellent site avec la barre
d'espace :)

@+
Fabien LE LEZ (29/11/2006, 21h51)
On Wed, 29 Nov 2006 18:20:15 +0100, Dominique Ottello
<air.intakes>:

>Je viens juste de m'apercevoir que des liens écrits pour aller en haut
>de page : <a href='#'>Haut</a>


J'ai beau lire attentivement
<http://www.w3.org/TR/REC-html40/struct/links.html>, je ne trouve
aucune référence à cette fonctionnalité.

Passer <http://validator.w3.org/> sur ton code pourra peut-être te
permettre d'y voir plus clair.
Florian Sinatra (29/11/2006, 22h54)
*Dominique Ottello* @ 29/11/2006 18:20 :
> Bonjour,
> Je viens juste de m'apercevoir que des liens écrits pour aller en haut
> de page : <a href='#'>Haut</a> fonctionnent bien avec Firefox, IE6 et
> IE7, mais pas avec Opera 9.02.
> Est-ce une « fonctionnalité » ou un défaut d'Opera ?


Sauf erreur, rien dans les normes" ne prévoit qu'un lien vers une ancre
sans identifier d'ancre amène en haut de page, au contraire même :
<http://www.w3.org/TR/REC-html40/struct/links.html#h-12.2.4>

Je crois que ce sont les navigateurs qui le permettent depuis toujours,
impossible donc de s'y fier à long terme.
Tu as bien meilleur temps de donner un id à ton <body> ou à n'importe
quel autre élément et de faire un lien vers cette ancre. C'est valide et
fonctionne partout.
rm (29/11/2006, 23h39)
Le mercredi 29 novembre 2006 à 21:54, Florian Sinatra a écrit :

> Je crois que ce sont les navigateurs qui le permettent depuis toujours,


Pas tous les navigateurs... car Konqueror ne se permet pas une telle
interprétation et pas depuis toujours... car le vieux Mosaic 3.0 ne fait
pas ça non plus :)
Reste à savoir qui, de IE ou de Netscape, aura amené cette confusion :)
IE3 remontait même en début de page si une ancre au nom inconnu était
rencontré... de là à ce que les autres l'aient pris comme modèle :-/

@+
Sergio (30/11/2006, 10h52)
Le Fou a exprimé avec précision :

> Parceque le "#" doit être suivi d'un nom donné à une ancre.
> Comme dans ton cas il n'y a rien derrière le "#", Opéra ne réagit pas.
> <a href='#'>Haut</a> n'a jamais été un "lien pour aller en haut", il se
> trouve que certains navigateurs réagissent comme ça mais ça n'est pas prévu
> pour à l'origine.


Question suivante : Comment créer un lien qui va vers le haut de la
page, dans le strict respect des standards ? (et qui fonctionne avec
les navigateurs du marché).
Pierre Goiffon (30/11/2006, 11h27)
Sergio wrote:
>> <a href='#'>Haut</a> n'a jamais été un "lien pour aller en haut", il se
>> trouve que certains navigateurs réagissent comme ça mais ça n'est pas
>> prévu pour à l'origine.

> Question suivante : Comment créer un lien qui va vers le haut de la
> page, dans le strict respect des standards ?


Si la page est index.html, <a href="index.html"> ?
Dominique Ottello (30/11/2006, 11h39)
Fabien LE LEZ <gramster> écrivait :

> Passer <http://validator.w3.org/> sur ton code pourra peut-être te
> permettre d'y voir plus clair.


Justement, le « validator W3C » ne m'a jamais donné ni erreur, ni
avertissement sur les <a href='#'>Haut</a>, tant en page par page qu'en
validation par lot.

Merci pour toutes les réponses.
Le code a été modifié pour intégrer sur toutes les pages
<body id='debut_'> et tous les liens de haut de page sont également
modifiés en conséquence...
Seulement deux « include » à modifier ; merci PHP.
Sergio (30/11/2006, 12h05)
Pierre Goiffon a exprimé avec précision :
> Sergio wrote:
> Si la page est index.html, <a href="index.html"> ?


Pas très pratique (si on renomme la page, faut tout changer...). Le <a
href="#"> a l'avantage de la simplicité.

Z'auraient pu intégrer ce standard de facto au W3C...

Contournement :
Faire une ancre "#top" au début du document...
Le Fou (30/11/2006, 21h22)
Sergio a écrit :
> Le Fou a exprimé avec précision :
> > Parceque le "#" doit être suivi d'un nom donné à une ancre.
> > Comme dans ton cas il n'y a rien derrière le "#", Opéra ne réagit pas.
> > <a href='#'>Haut</a> n'a jamais été un "lien pour aller en haut", il se
> > trouve que certains navigateurs réagissent comme ça mais ça n'est pas prévu
> > pour à l'origine.


> Question suivante : Comment créer un lien qui va vers le haut de la
> page, dans le strict respect des standards ? (et qui fonctionne avec
> les navigateurs du marché).


Le strict respect :
<body>
<a name="haut">
....
<a href="#haut">Remonter</a>

Une manière qui marche :
<body name="haut">
....
mais ça n'est pas valide car l'attribut "name" ne s'applique pas à l'élément
"body".

Une autre manière qui marche parfois(pas partout il me semble) :
<body id="haut">
....
mais ça n'est pas valide non-plus car le "href" doit pointer vers le "name"
et non "l'id" :
"URIs that designate anchors contain a "#" character followed by the anchor
name"
Florian Sinatra (01/12/2006, 00h08)
*Le Fou* @ 30/11/2006 20:22 :
> Une autre manière qui marche parfois(pas partout il me semble) :


En 2006, je crois qu'on peut dire partout.

> <body id="haut">


Ca fonctionne, mais il serait bien mieux de donner un nom plus explicite
à cet id, non pas par sa position mais par son contenu (par exemple, le
nom du site ou de la page). Ainsi, cet attribut peut remplire pleinement
sa fonction. Mais ca n'est pas primordial ici.

> mais ça n'est pas valide non-plus car le "href" doit pointer vers le "name"
> et non "l'id" :
> "URIs that designate anchors contain a "#" character followed by the anchor
> name"


Archi-faux. « [...] the anchor name » = « [...] le nom de l'ancre »,
c'est tout. Et une ancre peut être créée par name ou par id.

Si t'as de la peine avec l'anglais, la trad' est ici :
<http://www.la-grange.net/w3c/html4.01/struct/links.html#h-12.2.1>
Le Fou (01/12/2006, 20h51)
Florian Sinatra a écrit :
> *Le Fou* :
> > mais ça n'est pas valide non-plus car le "href" doit pointer vers le "name"
> > et non "l'id" :


> Archi-faux. « [...] the anchor name » = « [...] le nom de l'ancre »,
> c'est tout. Et une ancre peut être créée par name ou par id.
> Si t'as de la peine avec l'anglais, la trad' est ici :
> <http://www.la-grange.net/w3c/html4.01/struct/links.html#h-12.2.1>


Tu as entièrement raison !
Je n'ai pas de problème particulier avec l'anglais, simplement je n'étais
pas descendu assez bas sur la page pour lire ces lignes ;-)
Mille excuses.
Discussions similaires