Mes impressions sur le web, les standards et autres…


Mercredi 10 décembre 2003

Sacré Opera

Continuant mes tests sur les types MIME, j’ai décidé aujourd’hui d’affiner ma détection des types de média supportés en tenant compte du coefficient de préférence. C’est cette valeur à virgule précédée de q= qui accompagne certains types dans l’en-tête accept. Voici l’en-tête accept renvoyé par Opera 7.22 :

text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1

Cela m’a permis de constater que ce navigateur avait une préférence pour le type text/html plutôt que pour application/xhtml+xml. Or, c’est ce dernier que j’envoyais, me basant simplement sur sa présence ou non dans l’en-tête accept.

La solution généralement donnée pour envoyer le bon en-tête (et que j’ai rappellée moi même dans le billet précédent) est donc erronée, ou du moins incomplète. Cela est d’autant plus évident que dans le cas présent, Opera a un gros trou de mémoire en ce qui concerne le DOM si la page est servie avec le type application/xhtml+xml (*ricanements*).

J’ai donc concocté une fonction plus précise et tenant compte des coefficients de préférence, ce qui a pour conséquence que les pages sont envoyées avec le type text/html sous Opera (fonction basée sur ce que j’ai mis en place dans ma classe output):

function sendType()
{
    $mime_types = array('application/xhtml+xml', 'text/html');
    $mime_type_selected = 'text/html';
    $q_prefs = 0.0;
    
    foreach( $mime_types AS $mime_type )
    {
        if( !preg_match('/' . preg_quote($mime_type, '/') . '(?:;q=([0-9]\.[0-9]))?/', $_SERVER['HTTP_ACCEPT'], $match) )
        {
            continue;
        }
        
        $q = ( !empty($match[1]) ) ? $match[1] : 1.0;
        
        if( $q > $q_prefs )
        {
            $mime_type_selected = $mime_type;
            $q_prefs = $q;
        }
    }
    
    header('Content-Type: ' . $mime_type_selected . '; charset=iso-8859-15');
}

J’ai donc mis tout cela en place et cela fonctionne bien, Opera reçoit désormais mes pages avec le type text/html. Le petit script pour afficher l’adresse source d’un bloc de citation fonctionne… ok, le sélecteur de style fonc… ne fonctionne pas, quoi ?! Bon, ok, on va débogguer tout ça tranquillement. Je fais quelques tests par ci par là pour finir par me rendre que Opera ne connait pas le tableau document.styleSheets !

Non mais c’est quoi ce navigateur de merde ? (Et je pèse mes mots) Même IE 5.01 connait ce tableau ! Bon, récapitulons :

  • DOM inconnu au bataillon si la page est envoyée avec application/xhtml+xml
  • Tableau document.styleSheets non reconnu (reconnu par IE 5.01 qui date de 1999)
  • Bug avec la règle CSS a[hreflang|="en"]:after { content: "\00A0" url("/Icones/en"); } (le texte du lien est remplacé par deux drapeaux)
  • Sélecteur universel non reconnu
  • J’en oublie sùrement d’autres…

Rassurez moi, la version payante dispose d’un moteur moins buggué ? C’est quand même pas cet Opera qui est payant ? => Mozilla ou Firebird en français.

Help me

J’ai un petit souci avec l’encodage UTF-8 de mon fil RSS (et par extension, avec l’encodage de mes pages).

J’utilise la fonction utf8_encode(), associée à quelques str_replace() par derrière pour traiter les caractères qui ne sont pas dans le jeu ISO-8859-1.

Si quelqu’un comprend le pourquoi du comment, qu’il n’hésite pas à se manifester :/

Publié à 13h28

Catégorie :

CSS et Netscape 4.x

html { net\scape: blob; }

Pouf, plus de styles de présentation dans Netscape 4.x (Testé avec Netscape Communicator 4.79).

Publié à 15h35

Faille critique dans Internet Explorer

S’il y a bien une faille de sécurité qui devrait convaincre les utilisateurs de IE d’abandonner ce navigateur obsolète, c’est bien celle-là (Ça ne fait pas planter le navigateur et c’est juste une page de tests donc pas de danger en l’occurence). Plus d’infos sur cette faille critique (qui ne sera pas corrigée avant la nouvelle année aux dires de Microsoft).

Publié à 16h40

Catégorie :



Site créé et maintenu par Aurélien Maille aka Bobe. Toutes les heures sont au format CEST.
Revenir à l’accueil – Zone de développement – Informations et accessibilité – CC licensed CC Licensed