11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Je cherche à utiliser les expressions javascript du CSS2 pour ie, en revanche je voudrais ne pas le déclarer dans la feuille de style mais dynamiquement dans du js, j'ai bien essayer ceci

obj = document.createElement( 'div' );
obj.style.top = 'expression( 400+'px' );


mais ie me le refuse, y a t'il un moyen de faire?
Par avance merci
j+
Modifié par spoutnikk (10 Dec 2006 - 14:06)
Salut,
spoutnikk a écrit :

obj = document.createElement( 'div' );
obj.style.top = 'expression( 400+'px' );
Il faut échapper les apostrophes dans ta chaîne. Ou mieux, encadrer ta chaîne avec des guillemés :
obj.style.top = "expression( 400+'px' )";
Ceci dit, je ne sais pas si ça marchera, et je ne vois pas l'intérêt dans ton exemple.

J'espère que tu fournis un équivalent pour les navigateurs autres que IE ?
oui j'ai lu ceci les commentaires conditionnels mais je ne souhaite pas toucher au HTML de la page, au mieux je peux modifier ma feuille de style ou encore mon fichier js. Pour ce qui est du html dans ma page je génére tout en DOM.

existe t-il alors un moyen dans un fichier css de faire ce test if ( ie5, ie5.5, ie6 ) alors expression ?

Non l'exemple n'a pas grand intêret en faite je veux utiliser le fixed dans ie alors j'essaye d'utiliser le
expression(documentElement.scrollTop+body.scrollTop)


j'ai essayé aussi

obj.style.top.expression = 'documentElement.scrollTop+body.scrollTop';


pas d'erreur mais cela ne marche pas...
Merci d'avance de vos remarques
j+
je vais me répondre Smiley smile
je m'en suis sorti avec className
obj.className = document.all ? 'styleie' : 'style';

ainsi je gère les deux cas dans ma feuille de style...
j+
impossible pour info de faire fonctionner setExpression
je m'en sors actuellement en codant comme ceci :

obj.style.cssText = 'expression(documentElement.scrollTop+body.scrollTop)';