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";
}
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.
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.
@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.
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.
@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.vu que expression() utilise du javascript en interne j’imagine que le traitement doit être très similaire