Les bugs que j'ai recensé à ce jour
Cadres et JavaScripts dans Netscape 3
Voici quelque lignes qui donnent des info sur le type de navigateur utilisé
| Nom de votre navigateur
: <SCRIPT language="JavaScript"> document.write(navigator.appName) </SCRIPT> <BR> Version : <SCRIPT language="JavaScript"> document.write(navigator.appVersion) </SCRIPT> |
Première application dans un cadre : ca marche parfaitement
| Nom de votre navigateur : Version : |
Second exemple Cadres imbriqués : le cadre précèdent est cette fois inséré dans la première cellule d'un autre cadre
|
La ca ne fonctionne pas avec NETSCAPE 3 |
Il m'en a coupté quelques heures de travail pour comprendre le pourquoi du non fonctionnement. Alors attention aux cadres imbriquées et NETCAPE 3. Je suppose que le problème se répète dans d'autres cas.
Frames et fonction open.window()
Une petite fonction sympa pour ouvrir une page dans un nouvelle fenetre du navigateur, paramétrable et de taille variable.
| function ouvre_fenetre() { window.open('sites.htm','sites','width=500,height=300,scrollbars=yes'); } |
Essayons d'utiliser cette fonction.
| Sites sur Javascript | <a href="javascript:ouvre_fenetre()">Sites sur Javascript</a> |
| <form> <p align="center"><input type="button" value=" Liens javascript " onclick="ouvre_fenetre()"> </p> </form> |
|
|
<a
href="javascript:ouvre_fenetre()"> <img src="liens.gif" align="absmiddle" border="0" width="180" height="92"></a> |
Vous constatez que le lien classique et le lien image ne fonctionnent pas et générent une erreur de la machine JAVA. En fait j'ai du provoquer cette erreur, mais elle aurrait lieu systèmatiquement si les liens avaient été situés dans le cadre sommaire.
Explications :
- Ce cadre est le cadre 'principal'
- le cadre de gauche est le cadre 'sommaire'
- Les pages sont écrites dans un language HTML chatié et le paragraphe HEAD de la page sommaire continet le TAG : <base target="principal">
- J'ai truqué cette page 'principal' en lui insérant un tag <base target="sommaire"> le navigateur va alors chercher le javascript dans le cadre désignée par le tag href= , soit dans le cadre sommaire, ou il n'existe pas
2 Solutions :
- suprimer le tag <base target="xxxx"> (attention de bien spécifier le tag target sur aperès chaque href)
- ajouter apres <a href="javascript:xxxx", target="frame ou est ecrit le script">
La première solution est préférable, les différents navigateur semblant réagir de façon un peu imprévisible à la seconde.
Comportement de la fonction history.back()
Une fonction bien pratique qui permet de revenir à la page précédente (à noter que history.go(-1) fait la même chose)
| <form> <center> <p align="center"><input type="button" value=" Back " onclick="history.back()"> </p> </center> </form> |
Celui la fonctionne bien, mais essayez celui qui est situé sur le cadre sommaire (à gauche), cliquez plusieurs fois dessus, au début cela fonctionne bien, mais lorsque vous devez sortir des frames pour revenir à la page d'acceuil (drapeaux francais/anglais), voila ce qui se passe :
NETSCAPE : ca ne fonctionne pas
IE 4 : ca fonctionne parfaitement
IE 3 : ca fonctionne en partie, mais ca ne supprime pas les frames, et affiche la page d'acceuil dans le cadre sommaire.
Netscape et l'alignement des formulaires
Prenons un formulaire tout simple, comme le précédent par exemple, et écrivons le de 3 façons différentes :
| Normal | <form> <p align="center"><input type="button" value=" Back " onclick="history.back()"> </p> </form> |
|
| Autre possibilité | <form> <center> <p><input type="button" value=" Back " onclick="history.back()"> </p> </center> </form> |
|
| Redondance | <form> <center> <p align="center"><input type="button" value= " Back " onclick="history.back()"> </p> </center> </form> |
Avec NETSCAPE, dans le premier cas, le centrage du bouton ne se fait pas. Le deuxieme cas ne fonctionne que parce qu'il est placé à l'intérieur d'un tableau régis par le tag <div align=center> sinon il serait cadré à gauche Seul le troisième fonctionne.
Par contre IE réagis parfaitement dans les 3 cas.
Ce bug (HTML) est particulièèrement génant car les logiciels d'aide à la composition de pages (notement FRONTPAGE), suppriment automatiquement les redondances de codage HTML. Ce qui oblige à retoucher manuellement les pages après chaque modification dans un tel logiciel. Grrrrrrr........
La propriete parent et Netscape 3
Michael B. m'a consulté concernant un bug de
netscape 3 sur ces pages, coici ce que j'ai découvert :
Attention, utilisateurs de de netscape 3 la consultation de
l'exemple entrainera un plantage de votre machine !
Créons quelques pages pour illustrer le plantage :
bug5.htm html> |
ebug5h.htm <html> |
ebug5b.htm <html> |
Apparement netscape 3 a un gros probleme de pile ! surprenant non ?
Voici la solution : placer le code javascript dans une troisieme frame qui sera cachée. Le code donne ceci :
sol5.htm html> |
esol5h.htm <html> |
esol5b.htm <html> |
ejv.htm <script language="Javascript"> |
Tag onunload et NE 4 (et les autres !)
Je suis tombé par hasard sur un 'bug' touchant de manière diverse plusieurs navigateurs. Je souhaitai ouvrir une nouvelle fenetre automatiquement en en quittant une autre. Pour cela j'utilise le tag 'unload', soit après 'body', soit après 'frameset', les résultats sont surprenant.
IE 4 : ca fonctionne parfaitement
IE 3 : ca fonctionne bien, mais pas si on ferme la fenetre du navigateur.
NE 4 : cela genere une erreur javascript si on integre le tag apres le body d'une des frames, il faut dans ce cas absolument l'integrer apres le tag frameset. Meme erreur en cas de fermeture de la fenetre du navigateur.
NE 3 : ca fonctionne parfaitement ???
Reste a savoir comment fonctionnent les versions MAC ?