Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bug dans un onclick

4 réponses
Avatar
Stéphane Gauthier
Salut =E0 tous!

Je suis confront=E9 =E0 un bug tr=E8s bizarre dans Javascript. J'ai constat=
=E9 que le bug est bel et bien dans le code car il se produit sur les 3 fur=
eteurs test=E9s (MSIE, Firefox, Chrome).

Voici le bug en question...
L'adresse de la page :
http://www.photographegauthier.com/mariage.html
Le bug se trouve =E0 la ligne 61. La commande "document.body.clientHeight" =
dans le onclick du lien retourne la valeur 0 plut=F4t que la hauteur de l'=
=E9cran.

Voici la commande qui ne fonctionne pas:
<a href=3D"galerie.php?g=3Dimage_mariage&n=3DMariage&e=3D0&t=3Dmariage" tit=
le=3D"Portfolio mariage" onclick=3D"this.href +=3D '&w=3D' + document.body.=
clientWidth + '&h=3D' + document.body.clientHeight"><h1 class=3D"barre">Por=
tfolio mariage</h1></a>

Pourtant, la m=EAme commande se trouve aussi sur la page index.html aux lig=
nes 91, 93, 95 et 97 et tout s'ex=E9cute correctement:
http://www.photographegauthier.com/index.html

Je sais que le bug ne se trouve pas dans la ligne 61 de mariage.html. Pour =
arriver =E0 cette conclusion, j'ai copi=E9 int=E9gralement la ligne 91 de i=
ndex.html dans mariage.html. Cette fois-ci, la valeur "0" =E9tait retourn=
=E9e. Le probl=E8me se trouve donc ailleurs dans la page.

Si quelqu'un avait une id=E9e de ce qui ne va pas, ce serait fort appr=E9ci=
=E9!

4 réponses

Avatar
Olivier Miakinen
Le 23/01/2012 17:09, Stéphane Gauthier a écrit :

[...]

Voici la commande qui ne fonctionne pas:
<a href="galerie.php?g=image_mariage&n=Mariage&e=0&t=mariage" title="Portfolio mariage" onclick="this.href += '&w=' + document.body.clientWidth + '&h=' + document.body.clientHeight"><h1 class="barre">Portfolio mariage</h1></a>



Il y a déjà des erreurs de HTML, avant d'aller voir ce qui se passe
dans le JavaScript :
1) Tous les « &n », « &e », « &t », « &w » et « &h » devraient être
réécrits « &amp;n », « &amp;e », etc.
2) Tu as mis un élément de type bloc (le titre h1) dans un élément
n'acceptant que de l'inline (le lien a).

Je te suggère de passer ton document par un validateur et de corriger
toutes les erreurs avant d'aller plus loin. Si ça se trouve, le bug
se résoudra de lui-même. Cf. par exemple <http://validator.w3.org/&gt;.

Pourtant, la même commande se trouve aussi sur la page index.html
aux lignes 91, 93, 95 et 97 et tout s'exécute correctement:
http://www.photographegauthier.com/index.html



En effet, ça semble tout à fait similaire.

Je sais que le bug ne se trouve pas dans la ligne 61 de mariage.html.
Pour arriver à cette conclusion, j'ai copié intégralement la ligne 91
de index.html dans mariage.html. Cette fois-ci, la valeur "0" était
retournée. Le problème se trouve donc ailleurs dans la page.

Si quelqu'un avait une idée de ce qui ne va pas, ce serait fort apprécié!



Je parie pour l'une des erreurs HTML précédant la ligne 61, qui
désorienterait plus le JavaScript dans mariage.html que dans
index.html.

Cordialement,
--
Olivier Miakinen
Avatar
Stéphane Gauthier
Je viens de changer pour des &amp; mais ça ne change rien. Je sais que
ma balise h1 peut sembler bizarre mais la css la change en inline, ce
qui ne devrait pas poser de problème. De plus, dans la page qui
fonctionne, j'ai aussi des h1 définis en inline. Ce n'est donc pas ça
le problème.
Avatar
Matt...
Le Mon, 23 Jan 2012 17:09:25 +0100, Stéphane Gauthier il.com>
a écrit:

Salut à tous!

Je suis confronté à un bug très bizarre dans Javascript . J'ai constaté
que le bug est bel et bien dans le code car il se produit sur les 3
fureteurs testés (MSIE, Firefox, Chrome).

Voici le bug en question...
L'adresse de la page :
http://www.photographegauthier.com/mariage.html
Le bug se trouve à la ligne 61. La commande "document.body.client Height"
dans le onclick du lien retourne la valeur 0 plutôt que la hauteu r de
l'écran.

Voici la commande qui ne fonctionne pas:
<a href="galerie.php?g=image_mariage&n=Mariage&e=0&t=mariage "
title="Portfolio mariage" onclick="this.href += '&w=' +
document.body.clientWidth + '&h=' + document.body.clientHeight"><h1
class="barre">Portfolio mariage</h1></a>

Pourtant, la même commande se trouve aussi sur la page index.html aux
lignes 91, 93, 95 et 97 et tout s'exécute correctement:
http://www.photographegauthier.com/index.html

Je sais que le bug ne se trouve pas dans la ligne 61 de mariage.html.
Pour arriver à cette conclusion, j'ai copié intégraleme nt la ligne 91 de
index.html dans mariage.html. Cette fois-ci, la valeur "0" était
retournée. Le problème se trouve donc ailleurs dans la page.

Si quelqu'un avait une idée de ce qui ne va pas, ce serait fort a pprécié!



Bonsoir,

Problème de DOCTYPE.

A la place de document.body, utlise document.documentElement

Matt...

--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/
Avatar
Stéphane Gauthier
Problème de DOCTYPE.

A la place de document.body, utlise document.documentElement

Matt...



Yess! Ça marche!

Merci Matt!