14/12/09

Emuler la propriété max-width pour IE6

maxWidthFixForIE6.js — Les expressions Javascript de Microsoft sont énormément utilisée pour pallier l’absence de support de telle ou telle fonctionnalité par pour IE6 en particulier ou Internet Explorer en général alors que leur utilisation grève les performances déjà inquiètantes du dernier de la classe. Il vaut mieux faire appel à du bon vieux Javascript !

window.onload = checkAvailableWidth;
window.onresize = checkAvailableWidth;
function checkAvailableWidth(){
    var container = document.getElementById("container");
    container.style.width = (document.body.clientWidth > 1100)? "1100px" : "auto";
}



6 commentaires pour “Emuler la propriété max-width pour IE6”

  1. Xavier dit :

    La proposition que tu nous offres est assez lourde surtout si l’on doit l’appliquer à X container. Maintenant que le « je dégrade pour IE6″ est à la mode ne pourrait on pas revenir à l’attribut « expression » ? Certes celui-ci est assez couteux mais il permet de laisser les choses à leur place.

  2. vincent voyer dit :

    Je me risque à une conclusion un peu hâtive mais entre ça et les expressions y a une différence de performance ?

    Les expressions sont recalculées à la volée à chaque changement d’apparence de la fenêtre du navigateur alors le faire en JS ou avec des expressions ça doit revenir au même … La vraie solution c’est d’éviter d’avoir à faire ce genre de développement.

  3. Bruno Bichet dit :

    @Xavier, @vincent voyer — d’après R. Nyman, les expressions CSS ne sont pas simplement recalculées à chaque changement d’apparence, mais en permanence : « The resulting value of an expression isn’t just calculated once, but consistently while you’re using the web page »…

    Donc, oui, ça prend beaucoup plus de ressources qu’un JavaScript qui est calculé une fois au chargement de la page et mis en cache pour les autres pages qui y font appel.

  4. Xavier dit :

    Merci de ton retour Bruno. Cependant tu fais la même chose que l’attribut « expression » dans ton JS vu que tu travailles sur l’événement « onresize ». Maintenant les avis et les méthodes seront toujours discutable et à retourner dans tous les sens donc nous arrêterons la polémique là. Encore merci pour toutes ces ressources.

  5. Bruno Bichet dit :

    @Xavier — c’est intéressant au contraire mais là on touche aux limites de ce que je connais du fonctionnement interne du JS. Effectivement, sur un événement onresize, on dirait bien que le navigateur « écoute » les changements éventuels pour déclencher la fonction. Mais il s’agit probablement dun équivalent à addEventListener qui est largement utilisée sans problème de performance par quasiment tous les scripts JS. Il est également plus que probable que les expressions Microsoft utilisent une alternative plus gourmande en ressources.

  6. vincent voyer dit :

    vu que expression() utilise du javascript en interne j’imagine que le traitement doit être très similaire

Laissez un commentaire

Vous pouvez utiliser les balises HTML suivantes : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Les commentaires sont publiés sous votre pleine et entière responsabilité et ne doivent pas contrevenir aux lois et règlementations en vigueur. Les propos racistes ou antisémites, diffamatoire ou injurieux, divulguant des informations fausses, relatives à la vie privée d'une personne ou utilisant des oeuvres protégées par les droits d'auteurs ne sont pas les bienvenus et seront modérés sans modération.

Merci d'être constructif et n'oubliez pas : « sans la liberté de ramer il n'est point d'éloge flotteur ! »

Subscribe without commenting