deniscope

Aller au contenu | Aller au menu | Aller à la recherche

2010 janv. 24

Les petits secrets de nos navigateurs: Partie 7

BrowserShot printscreen

Commentaires conditionnés

Le secret du jour n'est pas vraiment un secret puisqu'il s'agit d'une technologie liée à Internet Explorer que l'on appelle les conditional comments.

Je me rappelle la première fois où j'avais vu une page utilisant cet techno, j'avais trouvé la chose on ne peut plus "crade". Bon cela dit, je n'ai pas vraiment changé d'opinion sur ce genre de pratique qui consiste à utiliser quelque chose d'existant (ici, les commentaires) et de les bidouiller pour complétement en changer la nature (ici, ajouter un filtre à navigateur).

Comme nous le montre le test 7, cela ne fonctionne que sous IE (et pour cause, c'est une techno propriétaire) et on peut d'ailleurs voir avec le test browsershot que cela ne fonctionne qu'à partir d'IE 5.

Je n'ai rien a ajouter sur ce secret, si ce n'est qu'une fois de plus c'est le navigateur Internet Explorer qui se distincte des autres.

2009 nov. 25

Les petits secrets de nos navigateurs: Partie 6

BrowserShot printscreen

Faute de frappe

J'avoue avoir hésité à publier ce secret car il n'est vraiment pas extraordinaire. Que se passe t'il lorsqu'une propriété d'un tag est mal écrite? Comme nous pouvons le voir sur le résultat browsershot et grâce au test 6, une fois encore, cela dépend des navigateurs.

Le test 6 comporte une série de tag (un par ligne) avec, à chaque fois, une façon différente d'écrire la couleur de fond.

Ce secret n'est pas si extravagant que cela car tout le monde se doute bien que devant une faute d'écriture de tag, les navigateurs se rattrapent un peu aux branches et font ce qu'ils peuvent pour rentre le tag au mieux. Et c'est exactement ce qui se passe là. La plupart des navigateurs ignorent simplement la propriété mal écrite alors que d'autre essai autant que faire se peut d'évaluer une valeur (pour cette propriété).

Un petit plus tout de même pour ce secret, lié à la dernière ligne du test 6. Cette ligne définit deux fois la même propriété pour changer la couleur de fond: <div style = "background: green" style = "background: blue" />. On peut noter ici qu'aucun des navigateurs testés ne prend la seconde valeur, toutes les dernières lignes sont vertes (ouais, c'est pas évident sur l'image mais vous me faites confiance hein?).

2009 juil. 9

Les petits secrets de nos navigateurs: Partie 5

BrowserShot printscreen

Se réveiller après la bataille

Le secret numéro 1 a déjà révélé un comportement étrange après l'événement onload. Le secret numéro 5 n'en est pas moins étonnant. Plantons le décors.

L'histoire se passe après l'événement onload, et c'est l'histoire d'un tag SCRIPT généré et inséré au DOM. L'histoire raconte que le script contenu dans le tag SCRIPT en question n'est pas automatiquement exécuté comme on pourrait s'y attendre.

Regardons de plus près un exemple avec le test 5, pour simplifier il peut se découper en trois étapes:

  1. Appel d'une méthode pour mettre un fond rouge
  2. L'événement onload appel une méthode
  3. La méthode construit un tag SCRIPT qui contient la même méthode que le point 1 mais avec un fond vert

Le test contient deux façons différentes de construire le tag SCRIPT, à gauche en écrivant littéralement le tag dans la propriété innerHTML d'un tag DIV et à droite en utilisant la méthode createElement. Pour résumer, si le carré est vert c'est que le tag SCRIPT a été exécuté, s'il reste rouge c'est qu'il ne l'a pas été.

Et là, que peut-on voir de nos petits yeux, encore embrumés d'une telle découverte, que les résultats sont pour le moins inconstant (voir le récapitulatif BrowserShots sur l'image ci-dessus). Certains navigateurs font très bien leur boulot et obtiennent les deux carrés verts, pendant que d'autres n'en ont qu'un seul voir pas du tout. On peut noter, pour ce secret, une nette différence (ils sont opposés) entre les deux gros concurrents leader du marché, Firefox et Internet Exporer.

Maintenant, quant à expliquer le phénomène, je me contenterais de faire comme pour les autres secrets, c'est à dire de seulement le constater.

2009 juin 11

Les petits secrets de nos navigateurs: Partie 4

BrowserShot printscreen

Absolutely URL

Je m'apprête à écrire mon quatrième "petit secret de navigateur" lorsque je m'avise de n'avoir pas encore définit le terme. Pallions donc ce grave manquement.


> "petit secret de navigateur":
(expression)
  1. Comportement inattendue d'un navigateur pour une situation qui ne l'est pas moins (inattendue).
  2. Action surprenant d'un navigateur devant une situation d'exception (rare).

Oui, je suis bien conscient que ce genre de définition n'aide pas vraiment, et je vais donc passer à l'exemple qui n'est rien de moins que le secret numéro 4. Voyez vous même dans l'image ci-dessus, à une situation burlesque, certain navigateur donne un résultat inattendue.

Résultat du test 4 avec Internet Explorer

Vous l'aurez sans doute comprit, le secret numéro 4, qui a également sa propre page test, concerne les url relatives. Si le rectangle vert apparait, c'est que l'url est correctement interprétée. Je ne m'étendrais pas plus sur ce secret tellement il est simple, je vous invite à voir les résultats browsershots ci-dessus.

2009 mai 22

Les petits secrets de nos navigateurs: Partie 3

BrowserShot printscreen

Une livre sinon rien

Lorsqu'un navigateur communique avec un serveur, ils utilisent des codes pour être sûr de bien se comprendre. Ces codes sont naturellement les mêmes pour tous et ne permettre guère l'improvisation. Il n'en reste pour autant pas moins qu'une requête HTTP (car c'est bien de cela qu'on parle) peut être constitué d'une entête et de données. En règle général et sauf contre ordre, les navigateurs affiches les données quelques soient le code envoyé.

Pour illustrer ces communications, j'ai créé une petite page test avec les principaux codes HTTP. Comme le montre le détail de la page test ci dessous, chaque code est appelé deux fois. La première fois (à gauche) avec peu de donnée, la seconde (à droite) avec plus de 512 octets de donnée, les deux pages affichant un carré vert.

Code HTTP 200 OK, zoom

Alors pourquoi cette limite des 512 octets? Et bien c'est là que réside le secret (et le jeu de mot foireux du titre également). Si vous regardez de plus près le résultat donné par le site broswershots (ci dessus), le navigateur Internet Explorer réagit différemment aux réponses HTTP en fonction du nombre d'octet envoyé. J'avoue que même si vous pouvez cliquer sur l'image des résultats pour zoomer, la chose n'est pas flagrante, c'est pourquoi, dans ma grande mansuétude, j'ajoute une copie d'écran (ci-dessous) d'une partie de la page test sous Internet Explorer. Détail des résultats d'Internet Explorer Encore une fois, Internet Explorer se démarque des autres navigateurs par un comportement que je n'arrive pas vraiment à comprendre. Concrètement, Internet Explorer n'interprète les données envoyées seulement si elles sont assez nombreuses...

Vous avez une explication?

2009 mai 9

Les petits secrets de nos navigateurs: Partie 2

BrowserShot printscreen

No comment

S'il y a quelque chose dont les bloggeurs sont friands, c'est bien des commentaires. Mais cela n'a rien à voir avec notre sujet, je ne parlerais pas des commentaires de blog (même si je les apprécie) mais bel et bien des commentaires HTML.

Un commentaire HTML débute par les caractères "<!--" et termine par "-->", voilà pour la théorie.

Comme je suis joueur, j'ai essayé plusieurs autres façons d'écrire des commentaires sur cette page test. Lorsque le carré rouge apparait, c'est que le commentaire n'est pas pris en compte.

Les tests sont les suivants:

<!--   -->   <!--   --!>
<!--       <--   -->
<!-   -->   <!--   ->

Comme vous pouvez le constater sur l'image des résultats ci-dessus (toujours obtenus grâce au service en ligne BrowserShots), les commentaires HTML n'ont pas toujours le comportement auquel on s'attend.

Si vous oubliez de refermer votre commentaire, ou si vous le fermez mal (selon les navigateurs), il sera automatiquement fermé au prochain caractère supérieur (>) de votre page. Pour reprendre une expression des expressions régulières, on pourrait dire que les commentaires HTML sont "non greedy" (ou "lazy"). C'est à dire que si le tag de fermeture (-->) n'est pas trouvé, le navigateur fermera "au plus tôt" le commentaire, en l'occurrence au prochain caractère supérieur (>).

Cela laisse sans voix non? (ou plutôt sans commentaire).

2009 avr. 27

Les petits secrets de nos navigateurs: Partie 1

Si Champollion m'était conté.

browsershot1.jpg On a tous nos petits secrets, des comportements inavouables que la décence nous fait cacher aux yeux du grand public. Mais voilà, Internet n'est pas constitué seulement du grand public et, immanquablement, tout secret finit par être percé et exploité. Regardons de plus prêt une méthode javascript largement utilisée sur le web: document.write.

Si je me fis à cette documentation en ligne, il est dit:

Do not use the write method or the writeln method on the current document after the document has finished loading unless you first call the open method, which clears the current document window and erases all variables.

Comme je suis taquin, j'ai écrit une petite page pour vérifier cette information. Cette page est constituée de deux pages tests. Chaque page test est constituée d'un gros carré rouge et d'un appel à une méthode qui écrit un gros carré vert. Seul l'appel à cette méthode n'est pas placé au même endroit. Voici le code de la méthode:

 function beGreen(){
     document.write('<div style = "width: 100%; height: 100%; background: green" />');
     document.close();
 }

La première page test appelle la méthode document.write juste après le chargement de la page.

window.onload = beGreen;

L'effet est immédiat, le gros carré vert apparait.

La seconde page test est un peu plus complexe. Le code est également situé dans l'événement onload mais ressemble à ca:

window.onload = function(){    var obj=document.createElement("script");obj.src="onload.js";document.body.appendChild(obj);}

On construit un élément SCRIPT dont la source sera onload.js qui lui contient exclusivement un appel à la méthode beGreen. L'effet n'est pas si immédiat, mais le gros carré vert apparait tout de même, mais... Mais le gros carré vert n'apparait curieusement pas avec tous les navigateurs.

En utilisant l'excellent service en ligne BrowserShots sur la page test, vous obtenez les résultats présentés sur l'image ci-dessus (vous pouvez cliquer sur l'image pour la voir en plus grand). Que passa? Il y a encore du rouge avec les navigateurs Internet Explorer? Pour des raisons qui m'échappent Internet Explorer se refuse à écraser le document sur la seconde page test. Alors pourquoi? Et bien, pour tout dire, je n'en sais rien...